2011-09-14 36 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 

因为有一个独特的主键,所有行都是不同的。