猿问
下载APP

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

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

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

查询:

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


qq_遁去的一_1
浏览 50回答 3
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的数据库引擎中工作。

慕慕森

查看查询:SELECT * FROM Table1 WHEREid NOT IN (SELECT          e.id    FROM         Table1 e            INNER JOIN         Table2 s ON e.id = s.id);从概念上讲是:在子查询中获取匹配的记录,然后在主查询中获取不在子查询中的记录。

慕容708150

SELECT&nbsp;<column_list>FROM&nbsp;TABLEA&nbsp;a LEFTJOIN&nbsp;TABLEB&nbsp;b&nbsp; ON&nbsp;a.Key&nbsp;=&nbsp;b.Key&nbsp;WHERE&nbsp;b.Key&nbsp;IS&nbsp;NULL;https://www.cloudways.com/blog/how-to-join-two-tables-mysql/
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答