2012-11-19 35 views
1
drop table #temp1 
drop table #temp2 

create table #temp1 (id int identity, A int, B int) 
create table #temp2 (id int identity, A int, B int) 

insert into #temp1 values (20, 1001) 
insert into #temp1 values (20, 1001) 
insert into #temp1 values (30, 1001) 

insert into #temp2 values (20, 1001) 

在SQL的帮助下,我需要找出#temp1中的第二行和第三行不存在于#temp2中。比较两个表的数据

如何找到它?

+0

您正在使用哪些DBMS? –

回答

0

可以使用EXCEPT操作:

SELECT id, a, b 
FROM #temp1 

EXCEPT 

SELECT id, a, b 
FROM #temp2 ; 

你必须考虑,虽然很严重的事。 id列自动获取其编号,因此它们对您没有任何价值。在一个实例中,您可能在(a, b)列或其他一些定义为PRIMARY KEY的组合中有UNIQUE约束。所以,上面的例子是无效的。在第一个和第三个位置table1处将只插入两行。第二名将被拒绝,与第一名相同。

+0

@Mark:不,你有一个有效的观点。起初我有'SELECT a,b',并没有真正看那里的数字。 –