我正在计算给一个项目的投票数,只有两个可能的值:
vote = 1
和 vote = 2
。
SELECT COUNT(*) AS count
FROM match_votes
WHERE match_id = :match_id
GROUP BY vote
但是,如果没有投票给 1
但投票给 2
那么它将只返回 1 行,因为它不计算空值。我想返回 vote = 1
和 vote = 2
的计数,即使该项目没有投票。
此外,我想确保 vote = 1
的计数始终位于第一行。
最佳答案
你需要一个左连接
:
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;
关于mysql - 使用 GROUP BY 时计算空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35957919/