1

在 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 的预期结果。

为什么会这样?

4

2 回答 2

5

分阶段

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)
于 2013-08-01T07:41:02.623 回答
0

就像数学一样,顺序很重要,括号也很重要。
尝试这个:

(SELECT 2 
 EXCEPT 
 SELECT 0) 
UNION ALL 
(SELECT 0 
 EXCEPT 
 SELECT 2) 
于 2013-08-01T07:43:20.700 回答