採取以下語句:如果數據不同,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在這種方式下表現得比在解決方案中表現得更好)
@Mherdad,他們爲什麼這樣設計呢? – systemovich 2011-01-11 11:03:50