2013-07-30 38 views
0

数我有2个表有相同的列:使用除非考虑到重复

ID A B C 
------------------- 

我使用的命令除了有这2个表之间的差异。这几乎是完美的......但看起来这种情况下:

表1:

ID A B C 
------------------- 
1  1 1 1 
1  2 2 2 
1  1 1 1 

表2:

ID A B C 
------------------- 
1  1 1 1 
1  2 2 2 
1  3 3 3 

除了返回0行,因为该行1111已经出现在这些表,即使他是在不同的号码...这是问题所在。

我需要有

1 1 1 1 

的结果......多次行不会在第二个表出现。

在此先感谢

+0

也许你正在寻找'EXCEPT ALL'(出现由SQL Server是不支持的,至少以前的版本)? – stakx

+0

确实... –

回答

5
Select id,a,b,c from 
(
Select *, Row_Number() Over (Partition By id,a,b,c order by id,a,b,c) as Row 
from t1 
Except 
Select *, Row_Number() Over (Partition By id,a,b,c order by id,a,b,c) as Tow 
from t2 
) t 

SQL Fiddle Demo

+0

+1最佳解决方案 – Romesh

+0

完美,谢谢:) –

+0

@ViséeMaxencewelcomme .... –