mysql:join包含所有行(即使sum=0)

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

我有两个表:rmonth和alternatives
rmonth是一个完整月份内每个备选方案的聚合数据表(如果有的话),否则该行在rmonth表中不存在。
现在我想加入他们,这是我的代码:

  1. SELECT
  2. COALESCE(rmAntal, 0) AS sumMonth, aID, aText, rmUnitID
  3. FROM
  4. alternatives
  5. LEFT JOIN
  6. rmonth ON aID = rmAltID
  7. WHERE aToQuestID = 4418
  8. AND rmMonth = 3
  9. AND rmYear = 2018
  10. AND rmUnitID IN (10603,10960,10496)
  11. GROUP BY aID, rmUnitID
  12. ORDER BY aID ASC

但它并没有给出rmonth中不存在的行。所以这个场景给出了我想要的结果——只是它不能处理在rmonth中不存在特定unitid的替代方案的地方。我希望他们在召唤中只有0。
不幸的是,这正是我mysql知识有限的地方。
谢谢。

r7s23pms

r7s23pms1#

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

  1. ...
  2. WHERE aToQuestID = 4418 AND rmMonth IS NULL OR (
  3. AND rmMonth = 3
  4. AND rmYear = 2018
  5. AND rmUnitID IN (10603,10960,10496)
  6. )
  7. ...

这样,你会得到你所有的 alternatives 数据,即使它是 rmonth 为空。

相关问题