选择另一个表中没有外键的主键

时间:2012-10-28 11:53:34

标签: mysql sql database one-to-many

为了简化,我有两个使用外键与一对多相关的表,例如:

Users table:
id
name

Actions table:
id
user_id

一个用户可能有很多动作。我需要一个sql select来返回在actions表中没有user_id值的用户id。

Users Table:
id      name
1       John
2       Smith
3       Alice

Actions Table:
id      user_id
1       3
2       1

所以我需要一个返回用户ID 2(Smith)的SQL查询,因为外键值不包含id 2

我尝试了以下SQL,但它返回所有用户ID:

SELECT users.id from users left join actions on actions.user_id is null

3 个答案:

答案 0 :(得分:15)

select u.id
from users u
left outer join actions a on a.user_id = u.id
where a.user_id is null

答案 1 :(得分:3)

优化版本将是:

SELECT u.id
FROM users u
LEFT JOIN actions a
ON a.user_id = u.id
AND ISNULL(a.user_id)

答案 2 :(得分:2)

SELECT u.id
FROM users u
LEFT JOIN actions a
   ON a.user_id = u.id
WHERE a.user_id IS NULL