Mysql 尽管条件返回零记录,但仍显示记录

Mysql 尽管条件返回零记录,但仍显示记录,mysql,sql,Mysql,Sql,我有如下MySql查询: SELECT name, id_number, hr.id, file, created_at, updated_at From users u LEFT JOIN homework_targets ht on u.class_id = ht.class_id LEFT JOIN homework_replies hr on u.id = hr.user_id WHERE u.role = 'student' AND hr.homework_id = 8

我有如下MySql查询:

SELECT name, id_number, hr.id, file, created_at, updated_at 
From users u
LEFT JOIN homework_targets ht on u.class_id = ht.class_id
LEFT JOIN homework_replies hr on u.id = hr.user_id
WHERE u.role = 'student' AND hr.homework_id = 8                

这个查询工作得很好,但不像我预期的那样。我想显示显示的所有学生(用户)记录,尽管他们没有与家庭作业目标匹配的家庭作业回复记录。有可能吗?如果可能的话,我怎样才能做到呢?谢谢。

hr.JOIN\u id
条件从
WHERE
移动到
ON
以实现
左连接
结果:

SELECT name, id_number, hr.id, file, created_at, updated_at 
From users u
LEFT JOIN homework_targets ht on u.class_id = ht.class_id
LEFT JOIN homework_replies hr on u.id = hr.user_id AND hr.homework_id = 8   
WHERE u.role = 'student'

(如果您在
WHERE
子句中有它,您将得到常规的
内部联接
结果。)

hr.combinement\u id
条件从
WHERE
移动到
ON
以获得真正的
左联接
结果:

SELECT name, id_number, hr.id, file, created_at, updated_at 
From users u
LEFT JOIN homework_targets ht on u.class_id = ht.class_id
LEFT JOIN homework_replies hr on u.id = hr.user_id AND hr.homework_id = 8   
WHERE u.role = 'student'
(如果您在
WHERE
子句中有它,您将得到常规的
内部联接
结果。)