2011-01-11 105 views
1

採取以下語句:如果數據不同,Union會返回兩行,如果它們相同,則返回兩行!爲什麼?

select count(1) as cnt from tbl where val= 1 
union 
select count(1) as cnt from tbl where val = 0 

如果兩個選擇返回相同的值,結果爲單行與價值。如果這些選擇返回不同的值,則結果是兩行中包含兩個值。爲什麼?

我試圖用找到的總行數:

select sum (cnt) from 
(
    select count(1) as cnt from tbl where value = 1 
    union 
    select count(1) as cnt from tbl where value = 0 
) as tbl2 

其工作正常,如果數是不同的,但給一半的值,如果數是相同的......

(PS:更感興趣的是爲什麼sql在這種方式下表現得比在解決方案中表現得更好)

回答

1

工會和工會之間的所有主要區別在於工會做了明顯的在所有領域返回。如果工會所有人只是返回並加入各種結果集

相關問題