SQL Server 2008删除重复项

3
我有类似这样的重复内容。
col1, col2
1, alex
1, alex
2, liza
2, liza
3, peter
3, peter

每种只有两个。我该如何删除重复项?


1
有没有其他列可用于区分行? - Joe Stefanelli
@joeyes,这里有一个连续的pK。 - JOE SKEET
1
可能是重复的问题:SQL - 如何删除重复行? - Martin Smith
2
@Martin: “如何删除重复项” 似乎是最常见的重复问题。 - Quassnoi
哈哈!也许楼主只是在用反讽的方式表达。 - Martin Smith
3个回答

12
WITH    q AS
        (
        SELECT  *,
                ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col1, col2) AS rn
        FROM    mytable
        )
DELETE
FROM    q
WHERE   rn >= 2

请看这里:


3
+1:学到了新东西。我不知道你可以将CTE用作删除操作的目标。 - Joe Stefanelli

1
如果原始表不是很大。
select distinct * from origin_table into temp_table;
truncate table origin_table;
insert into origin_table select * from temp_table ;
drop table temp_table;

0
insert into table_new
   Select col1, col2, min(pk) as pk from table_old
   group by col1, col2

-- debug table_new

drop table_old

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接