比较两个表并给出第一个表中不存在的输出记录

时间:2013-09-06 03:40:48

标签: sql

我想要一个应该执行数据清理任务的SQL代码。

我有两个表都包含一些我想要比较它们的名称,只列出表2中但不在表1中的名称。

示例:

Table 1 = A ,B,C
Table 2 = C,D,E

结果必须有D和E?

4 个答案:

答案 0 :(得分:5)

SELECT t2.name
FROM   2 t2
       LEFT JOIN
       1 t1 ON t1.name=t2.name
WHERE  t1.name IS NULL

答案 1 :(得分:0)

select t2.name
from t2,t1
where t2.name<>t1.name -- ( or t2.name!=t1.name)

答案 2 :(得分:0)

如果DBMS支持它:

select name from table2
minus
select name from table1

更便携的解决方案也可能是:

select name from table2
where name not in (select name from table1)

答案 3 :(得分:0)

select T2.Name
from Table2 as T2
where not exists (select * from Table1 as T1 where T1.Name = T2.Name)

请参阅this article,了解不同的反连接实现(对于SQL Server)的性能。