首页 > 解决方案 > 尽管条件返回零记录,但显示一条记录

问题描述

我有这样的 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                

这个查询工作得很好,但不像我预期的那样。我想显示所有学生(用户)记录,尽管他们在 homework_replies 上没有与 homework_targets 匹配的记录,这可能吗?如果可能的话,我该怎么做?谢谢。

标签: mysqlsql

解决方案


hr.homework_id条件从WHEREto移动ON以获得真实LEFT JOIN结果:

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子句中有它,你会得到常规INNER JOIN结果。)


推荐阅读