2013-08-01 39 views
1

sql server 2008中以下兩個查詢的輸出應該是什麼?在以下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的預期結果。

爲什麼會這樣呢?

回答

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) 
+0

非常感謝你解釋這麼清楚 –

0

這就像數學,順序很重要,因此是支架。
試試這個:

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