在以下sql server 2008查询中未获得预期输出

时间:2013-08-01 07:37:41

标签: sql sql-server

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。

为什么会这样?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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

(SELECT 2 
 EXCEPT 
 SELECT 0) 
UNION ALL 
(SELECT 0 
 EXCEPT 
 SELECT 2)