Mysql:join包含所有行(即使SUM = 0)

时间:2018-04-23 14:09:24

标签: mysql

我有两张桌子的DB: rmonth 替代方案

rmonth是一个完整月份的每个备选项的聚合数据表 - 如果它们有任何 - 否则rmonth表中不存在该行。

现在我想加入他们,这是我的代码:

SELECT 
COALESCE(rmAntal, 0) AS sumMonth, aID, aText, rmUnitID 
FROM
alternatives
  LEFT JOIN
rmonth ON aID = rmAltID
WHERE aToQuestID = 4418
AND rmMonth = 3
AND rmYear = 2018
AND rmUnitID IN (10603,10960,10496)
GROUP BY aID, rmUnitID
ORDER BY aID ASC

但它没有给我rmonth中不存在的行。 所以这个场景给了我想要的结果 - 除了它无法处理rmonth中特定unitID不存在替代的位置。 我希望它们在sumMonth中仅列出0。

不幸的是,我的MySQL知识有限。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以添加OR运算符,例如

...
WHERE aToQuestID = 4418 AND rmMonth IS NULL OR (
   AND rmMonth = 3
   AND rmYear = 2018
   AND rmUnitID IN (10603,10960,10496)
)
...

这样,您就可以获得所有alternatives数据,即使它在rmonth中的计数器部分为空也是如此。