采取以下语句:如果数据不同,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