You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle SQL中UNION与WHERE查询结果差异原因咨询

UNION 与 WHERE AND 结果差异的原因

你的两个查询结果不同,核心是UNION和WHERE AND的逻辑完全不同:

1. UNION 的逻辑:取两个条件的「并集」

UNION 是把两个独立SELECT的结果合并(自动去重),它对应的逻辑是逻辑或(OR)——只要数据满足其中任意一个子查询的条件,就会被纳入结果。

你写的UNION查询等价于:

SELECT prod_id, ilosc
FROM ElementyZamowienia
WHERE ilosc = 100 OR prod_id LIKE '%BNBG';

所以结果里会包含:

  • 所有ilosc = 100的行(比如BR01、BR03,这两行只满足数量条件,不匹配prod_id的筛选)
  • 所有prod_id LIKE '%BNBG'的行(如果这些行数量不是100也会被包含,只是你的数据里刚好都是100)

2. WHERE AND 的逻辑:取两个条件的「交集」

WHERE 后用AND连接条件,要求数据同时满足所有条件——只有当一行数据既符合ilosc = 100,又符合prod_id LIKE 'BNBG%'时,才会被选中。这就是你得到「正确结果」的原因。

另外注意你第一个UNION查询里的LIKE是%BNBG(匹配后缀为BNBG的prod_id),但结果里的BNBG开头的行实际匹配的是BNBG%(前缀匹配),可能是输入笔误,但这不影响核心逻辑的差异。

内容的提问来源于stack exchange,提问作者AKIO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 23:50:01