mysql - 尽管条件返回零记录,但显示一条记录
问题描述
我有这样的 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 匹配的记录,这可能吗?如果可能的话,我该怎么做?谢谢。
解决方案
将hr.homework_id
条件从WHERE
to移动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
结果。)
推荐阅读
- c++ - C++:类成员的 const
- mongodb - 从 mongodb 检索值绑定标签文本
- python - 如何使用 python 迭代器阅读 API 的下一页?
- azure-data-factory - 无法将数据从 Snowflake 复制到 Azure Blob
- c - 在 C 中使用 sizeof() 和指向结构的指针
- html - 使部分离屏 div 不会向屏幕添加水平滚动
- php - Shortcode for youtube videos wordpress
- date - SSRS 折线图计数当日期不为空时仅在有未来日期时才会中断
- css - SASS // 背景图片路径问题
- swift - Swift:核心数据的线程问题