如何使用LEFT JOIN选择MYSQL表中的所有记录,其中id不在列中?

时间:2013-07-19 14:12:34

标签: mysql

我有一个表格,我只想从中选择另一个表中不存在记录ID的记录。

以下是我的表格:

staff表:

enter image description here

和我的staff_to_assessors表格

enter image description here

我想要做的是从用户表中选择staff_to_assessors表中不存在id的所有记录。

到目前为止,我有:

SELECT * FROM users u 
LEFT JOIN staff_to_assessors s2a 
ON u.id = s2a.staff_id WHERE u.id NOT IN... 

我被困在最后一点!有人可以帮忙 感谢

3 个答案:

答案 0 :(得分:4)

如果未找到针对左连接的匹配项,您将收到null staff_id。

SELECT * FROM users u 
LEFT JOIN staff_to_assessors s2a ON u.id = s2a.staff_id 
WHERE s2a.staff_id IS NULL

SELECT * FROM users u 
WHERE u.id NOT IN(SELECT staff_id FROM staff_to_assessors)

答案 1 :(得分:0)

检查评估员表上的空id:

SELECT * FROM users u LEFT JOIN staff_to_assessors s2a 
ON u.id = s2a.staff_id 
WHERE s2a.staff_id is null 

答案 2 :(得分:0)

就像@ UrGuardian4ngel所述,但这是整个查询

SELECT
    *
FROM
    `users`
WHERE
    `users`.`id` NOT IN (
        SELECT
            `staff_to_assessors`.`staff_id`
        FROM
            `staff_to_assessors`
    )