SQL:查找table1.col1不存在table2.col2,返回table1' s记录

时间:2016-05-11 03:59:52

标签: sql

这是我的陈述

select * from table1
where col1 not in (select col2 from table2);

我想尝试(但失败了)

select t1.* from table1 t1
inner join table2 on t1.col1<> t2.col2

还有其他办法吗?

4 个答案:

答案 0 :(得分:0)

您尚未定义t2个对象并使用left join

SELECT t1.* FROM table1 t1 
    LEFT JOIN table2 t2 ON t2.col2 = t1.col1 WHERE t2.id IS NULL 

答案 1 :(得分:0)

select t1.* from table1 t1
left join table2 t2 on t1.col1 = t2.col2
where t2.col2 is null

这是缺失记录搜索的标准实现。

答案 2 :(得分:0)

要获取table1中存在但在table2中不存在的记录,您需要left join,而不是inner join

试试这个:

select t1.* 
from table1 t1
left join table2 t2 on t1.col1 = t2.col2
where t2.id is null -- any non-nullable column will do, best to use pk for performance.

答案 3 :(得分:0)

如果你试图找出t2.c1中存在或不存在的t1.c1(t1 = table1,c1 = column1)的数据,那么使用流动的脚本

select t1.c1 from t1 left join t2 on t1.c1=t2.c2

另外明智的是,如果你只想找到不在t2.c2中的t1.c1数据,那么下面的脚本是完整的帮助

select t1.c1 from t1 where t1.c1 not in (select t2.c2 from t2)