如何从表 A 中选择表 B 中不存在的记录 [重复]

Posted

技术标签:

【中文标题】如何从表 A 中选择表 B 中不存在的记录 [重复]【英文标题】:How te select records from table A which doesn't exist in table B [duplicate] 【发布时间】:2021-01-26 14:21:56 【问题描述】:

例如,我的表格如下所示:

Table `users`
id | name
 1 | John
 2 | Wick
 3 | Doe

Table `already_selected`
user_id
   2

在这种情况下,我需要从表users 中获取所有用户,这些用户在表already_selected 中不存在。我正在尝试这样做:

SELECT *
FROM `users` as `u`
JOIN `already_selected` as `as` ON `u`.`id` = `as`.`user_id`
WHERE `as`.`user_id` IS NULL

这将返回空结果。我的错误在哪里?我在谷歌周围红了文章,似乎是这样但仍然没有。

【问题讨论】:

【参考方案1】:

你需要使用LEFT JOIN

SELECT *
FROM `users` as `u`
LEFT JOIN `already_selected` as `as` ON `u`.`id` = `as`.`user_id`
WHERE `as`.`user_id` IS NULL

【讨论】:

以上是关于如何从表 A 中选择表 B 中不存在的记录 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

连接sql表以选择连接表中不存在的记录[重复]

SQL:如何从表A中一一检查是不是存在于表B上?

PL/SQL - 如何从连接表中返回单行

mysqli内部连接:其他表中不存在数据

SQL如何选择表中不存在的记录?

如果行中不存在所有值,则插入记录[重复]