返回所有父表行,但为与WHERE子句与MYSQL不匹配的子表行返回null

时间:2013-09-13 19:28:14

标签: mysql sql join

您好,我正在建立一个个人网站的问题。该页面是用户的仪表板,其中包含系统上所有类的列表。该表称为“类”,它是“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

此查询与我正在尝试的类似,但如果类没有与user_id匹配的子class_responses,那么类行将不会显示。

1 个答案:

答案 0 :(得分:1)

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

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