使用Except并考虑重复次数

时间:2013-07-30 09:25:17

标签: sql sql-server

我有两个相同列的表:

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

我正在使用 命令来区分这两个表。它几乎是完美的......但看看这个案例:

表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行,因为行1 1 1 1已存在于这些表中,即使他出现在不同的数字中......这就是问题所在。

我需要

1   1   1   1

结果......多次,因为该行没有出现在第二个表中。

提前致谢

1 个答案:

答案 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