我有两个表的数据库:
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知识有限的地方。

谢谢。

最佳答案

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

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


这样,即使alternatives中的计数器为空,您也将获取所有rmonth数据。

10-02 17:00