mysql sum left join显示所有类别,即使总和为0

kcwpcxri  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(440)

我希望根据一组数据的得分总和选择所有类别,即使该组数据不包括类别。但是,无论我尝试什么,它总是只显示具有实际数据的类别。
我创建了以下sqlfiddlehttp://sqlfiddle.com/#!9/52a127/3号
为了便于查看,我将粘贴 select 在此声明:

SELECT categories.id, IFNULL(SUM(raw_data.score), 0) as total
FROM categories
LEFT JOIN raw_data ON categories.id = raw_data.category_id
WHERE
(raw_data.quarter = '2018Q2' OR !raw_data.quarter) AND
raw_data.broker_id = 2 
GROUP BY categories.id
ORDER BY total DESC

从小提琴上可以看到,它只显示2个类别,但我希望选择全部6个类别,没有结果的类别为0。
感谢您的帮助,谢谢!

ozxc1zmp

ozxc1zmp1#

你需要把情况从 WHEREON 条款:

SELECT categories.id, IFNULL(SUM(raw_data.score), 0) as total
FROM categories
LEFT JOIN raw_data ON categories.id = raw_data.category_id
  AND (raw_data.quarter = '2018Q2' OR !raw_data.quarter) 
  AND raw_data.broker_id = 2 
GROUP BY categories.id
ORDER BY total DESC;

sqlfiddle演示

相关问题