我有两个mysql表,每个表中有一列。我想在第二个表中选择第一个表中不存在的条目。
我尝试了下面的查询,但似乎不起作用
SELECT column_name FROM `table_name_1`
WHERE NOT EXISTS (SELECT column_name FROM `table_name_2`);
例如:表\u name \u 1
column
111111111111
222222222222
333333333333
444444444444
表\u名称\u 2
column
222222222222
333333333333
555555555555
666666666666
现在,我只想得到表\u name\u 2中的555和666个条目。
3条答案
按热度按时间cnwbcb6i1#
所以需要第二个表中的一些记录。
那么第二个表必须在外部查询中。
(not)exists条件与中的(not)不同。
当使用exists时,exists中的查询和外部查询之间的关系需要添加到exists中。
SQLFIDLE测试
kkih6yb82#
你可以简单地
Left Join
从表2到表1,并获得所有那些唯一的值,对应于表1中不存在匹配的值(t1.column_name is null
)另外,请注意,为了提高性能,您需要对各自表中的两个列进行索引。
请尝试以下操作:
注意,如果列值被约束为唯一的(pk或unique约束),或者您不关心是否会产生重复的值,那么可以删除
DISTINCT
在上述查询中使用的关键字。结果:
db fiddle视图
1tu0hz3e3#
你的查询应该可以处理这个。检查小提琴