我有这个查询:
SELECT
SUM(IF(b.correct = 1,1,0)) correct_answers,
SUM(IF(b.correct != 1,1,0)) incorrect_answers,
SUM(IF(a.answer IS NULL) 1,0)) as no_answers,
a.ID
FROM `a` join b on a.answer = b.id
where a.created_at between '2014-06-10' and '2014-06-17'
group by a.ID order by correct_answers desc
基本上,我试图获取每个用户的测验的正确答案、错误答案和无答案的数量。所以我得到了正确和错误的计数。但是,当我尝试计算没有答案的数量(表 a 中答案列为 NULL)时,我得到的全是零。这个查询有什么问题吗?
最佳答案
试试这个:
SELECT SUM(b.correct = 1) correct_answers,
SUM(b.correct != 1) incorrect_answers,
SUM(a.answer IS NULL) AS no_answers,
a.ID
FROM a
LEFT JOIN b ON a.answer = b.id
WHERE a.created_at BETWEEN '2014-06-10' AND '2014-06-17'
GROUP BY a.ID
ORDER BY SUM(b.correct = 1) DESC;
关于mysql - IF 条件中 NULL 的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24262471/