如何解决左联接不显示所有左联接行
LEFT JOIN应该在左表中显示所有行,但是在运行以下查询时,我仅获得具有相同ID的地方值。 请有人可以给我一些有关我可能会出错的指导:
SELECT us.*,sp.date,k.kelas as nama_kelas
FROM gtech_tbl_user_siswa us
JOIN sekolah_tbl_kelas k ON k.id = us.kelas
LEFT OUTER JOIN gtech_tbl_absensi_siswa_pertemuan sp ON us.id = sp.id_user
WHERE sp.id_materi = 520
AND sp.id_sub_materi = 1206
预先感谢
解决方法
您需要将当前出现在WHERE
子句中的 right 表上的条件移动到涉及该表的左联接的ON
子句中:
SELECT *
FROM gtech_tbl_user_siswa us
INNER JOIN sekolah_tbl_kelas k ON k.id = us.kelas
LEFT OUTER JOIN gtech_tbl_absensi_siswa_pertemuan sp
ON us.id = sp.id_user AND sp.id_materi = 520 AND sp.id_sub_materi = 1206;
您遇到的问题是由于WHERE
子句发生在左连接的 之后。因此,即使实际上您的左联接确实可以避免联接左侧的不匹配记录被过滤掉,但以后的WHERE
子句仍然会删除此类记录。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。