为了账号安全,请及时绑定邮箱和手机立即绑定

如何从一个表中选择另一个表中不存在的所有记录?

/ 猿问

如何从一个表中选择另一个表中不存在的所有记录?

qq_遁去的一_1 2019-08-23 15:58:30

如何从一个表中选择另一个表中不存在的所有记录?

table1(id,name)
table2(id,name)

查询:

SELECT name   
FROM table2  
-- that are not in table1 already


查看完整描述

3 回答

?
守着一只汪
SELECT t1.nameFROM table1 t1LEFT JOIN table2 t2 ON t2.name = t1.nameWHERE t2.name IS NULL

:这里发生了什么?

:从概念上讲,我们选择所有行table1和我们尝试table2使用相同值name列的行来查找每一行。如果没有这样的行,我们只是将table2结果的部分留空。然后我们通过仅选择匹配行不存在的结果中的那些行来约束我们的选择。最后,我们忽略了结果中的所有字段,除了name列(我们确定存在的列,来自table1)。

尽管在所有情况下它可能不是最高性能的方法,但它应该在基本上每个尝试实现ANSI 92 SQL的数据库引擎中工作。


查看完整回答
反对 回复 2019-08-23
?
慕慕森

查看查询:

SELECT * FROM Table1 WHEREid NOT IN (SELECT 
        e.id    FROM
        Table1 e            INNER JOIN
        Table2 s ON e.id = s.id);

从概念上讲是:在子查询中获取匹配的记录,然后在主查询中获取不在子查询中的记录。


查看完整回答
反对 回复 2019-08-23
?
慕容708150
SELECT <column_list>FROM TABLEA a
LEFTJOIN TABLEB b 
ON a.Key = b.Key WHERE b.Key IS NULL;

https://img3.mukewang.com/5d5f9cf0000178a106000472.jpg

https://www.cloudways.com/blog/how-to-join-two-tables-mysql/


查看完整回答
反对 回复 2019-08-23

添加回答

回复

举报

0/150
提交
取消
意见反馈 邀请有奖 帮助中心 APP下载
官方微信