我有两个表的数据库:
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
数据。