使用GROUP BY时COUNT空值

时间:2016-03-12 12:58:38

标签: mysql sql

我计算一个项目的投票数量,并且只有两个可能的值:

vote = 1vote = 2

SELECT COUNT(*) AS count 
FROM match_votes
WHERE match_id = :match_id 
GROUP BY vote

但是,如果1没有投票,但2投票,那么它只会返回1行,因为它不会计算空值。我想返回vote = 1vote = 2的计数,即使该项目没有投票。

另外,我想确保vote = 1的计数始终是第一行。

1 个答案:

答案 0 :(得分:3)

您需要left join

select v.vote, count(mv.vote)
from (select 1 as vote union all select 2) v left join
     match_votes mv
     on mv.vote = v.vote
group by v.vote;

或者,将结果分为两列:

select sum(mv.vote = 1) as vote_1, sum(mv.vote = 2) as vote_2
from match_votes mv;
相关问题