LEFT JOIN 查询中的 WHERE 子句

WHERE clause in LEFT JOIN query

所以我想得到所有的SSC职位,并得到尚未被占用的职位数量。但是,我不知何故陷入了 where 子句。

这是我的 table 结构:

这是我的查询

SELECT p.position_id, a.account_id FROM positions p LEFT JOIN ssc s ON s.position_id = p.position_id AND s.removed = 0 LEFT JOIN students stud ON stud.students_id = s.students_id LEFT JOIN accounts a ON a.account_id = stud.account_id WHERE p.user_level_id = 6 AND p.removed = 0

实际结果是这样的:

预期结果仅显示 account_id 中为 NULL 的字段。但是,如果我在查询中包含 AND a.account_id = NULL,则结果为空。如果我将查询更改为:

SELECT p.position_id, a.account_id FROM positions p LEFT JOIN ssc s ON s.position_id = p.position_id AND s.removed = 0 LEFT JOIN students stud ON stud.students_id = s.students_id LEFT JOIN accounts a ON a.account_id = stud.account_id AND a.account_id = NULL WHERE p.user_level_id = 6 AND p.removed = 0

那么所有的账号ID都变成NULL

None 其中 = NULL 值。使用 IS NULL.

a.account_id IS NULL

您可以在此处阅读更多相关信息,https://dev.mysql.com/doc/refman/8.0/en/working-with-null.html。您可能更喜欢使用空字符串或默认值 0.