Принимая следующий оператор:
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 ведет себя так, чем в решении)