2011-09-14 98 views
2

如何從表中除去PK以外的所有列都重要的表中刪除重複項。如何分組以排除重複行

declare @dummy table 
(
    pk int, 
    a char(1), 
    b char(1), 
    c char(1) 
) 

insert into @dummy 
select 1, 'A', 'B', 'B' union all 
select 2, 'A', 'B', 'B' union all 
select 3, 'P', 'Q', 'R' union all 
select 4, 'P', 'Q', 'R' union all 
select 5, 'X', 'Y', 'Z' union all 
select 6, 'X', 'Y', 'Z' union all 
select 7, 'A', 'B', 'Z' 

什麼我得到了區分:

select * from @dummy 

pk   a b c 
----------- ---- ---- ---- 
1   A B B 
2   A B B 
3   P Q R 
4   P Q R 
5   X Y Z 
6   X Y Z 
7   A B Z 

我想的是:

select ... do magic .... 

pk   a b c 
----------- ---- ---- ---- 
1   A B B 
3   P Q R 
5   X Y Z 
7   A B Z 

回答

3

發現:

select min(pk), a, b, c 
from @dummy 
group by a, b, c 
+1

哈哈,恭喜!我幾乎在那裏,打敗了我11秒=) – jadarnel27

0

起初,我以爲不同會做,但我敢肯定,你想要的是組方:

select * from @dummy group by a,b,c 

因爲有一個獨特的主鍵,所有行都是不同的。