【问题标题】:LEFT JOIN NOT SHOW ALL LEFT JOIN ROWS左连接不显示所有左连接行
【发布时间】:2023-03-05 09:40:02
【问题描述】:

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

提前致谢

【问题讨论】:

    标签: mysql sql mariadb


    【解决方案1】:

    您需要将当前出现在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 子句稍后仍会删除此类记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      • 2015-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多