【问题标题】:Returning all parent table rows but return null for child table rows that don't match the WHERE clause with MYSQL返回所有父表行,但对于与 MYSQL 的 WHERE 子句不匹配的子表行返回 null
【发布时间】:2013-09-13 19:28:13
【问题描述】:

您好,我遇到了我正在构建的个人网站的问题。该页面是用户的仪表板,其中包含系统上所有类的列表。该表称为“classes”,它是“class_reponses”的父表,该表记录用户是否开始、完成或未能完成课程。 'class_responses' 中有一个 user_id。我正在尝试构建一个查询,该查询将列出所有类行,并且当 class_reponses user_id 与给定 id 不匹配时仅包含空字段。

SELECT * FROM classes AS Class
LEFT JOIN class_responses AS ClassResponse
ON Class.id = ClassResponse.class_id
WHERE ClassResponse.user_id = 7

此查询与我尝试进行的查询类似,但如果 classes 没有与 user_id 匹配的子 class_responses,则不会显示 classes 行。

【问题讨论】:

  • 尝试将where更改为and
  • 内连接可以吗?
  • @user1502952 在这种情况下不是因为你会得到相同的结果......这不是 OP 想要的

标签: mysql sql join


【解决方案1】:

将条件放在 ON 子句中的左连接表上。

SELECT * FROM classes AS c
LEFT JOIN class_responses AS cr
ON c.id = cr.class_id and cr.user_id = 7

【讨论】:

  • 就是这样!非常感谢,我快疯了。
猜你喜欢
  • 2013-07-28
  • 2013-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 2011-11-30
相关资源
最近更新 更多