2011-01-11 83 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

工会和工会之间的所有主要区别在于工会做了明显的在所有领域返回。如果工会所有人只是返回并加入各种结果集

相关问题