在 sql server 2008 中以下两个查询的输出应该是什么?
select 2
except
select 0
union all
select 0
except
select 2
select 2
union all
select 0
第一个查询给出的输出为 0,但我期望 2 和 0 的并集,而第二个查询在结果集中显示 0 和 2 的预期结果。
为什么会这样?
在 sql server 2008 中以下两个查询的输出应该是什么?
select 2
except
select 0
union all
select 0
except
select 2
select 2
union all
select 0
第一个查询给出的输出为 0,但我期望 2 和 0 的并集,而第二个查询在结果集中显示 0 和 2 的预期结果。
为什么会这样?
分阶段
select 2 except select 0
给
2
然后
union all select 0
给
2
0
然后
except select 2
删除 2 给
0
如果你想要 2 和 0,请使用
(select 2 except select 0)
union all
(select 0 except select 2)
就像数学一样,顺序很重要,括号也很重要。
尝试这个:
(SELECT 2
EXCEPT
SELECT 0)
UNION ALL
(SELECT 0
EXCEPT
SELECT 2)