sql server 2008删除重复项

sql server 2008删除重复项,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有像这样的复制品 col1, col2 1, alex 1, alex 2, liza 2, liza 3, peter 3, peter 每个只有两个。如何删除重复项 WITH q AS ( SELECT *, ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col1, col2) AS rn FROM mytable ) D

我有像这样的复制品

col1, col2
1, alex
1, alex
2, liza
2, liza
3, peter
3, peter
每个只有两个。如何删除重复项

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
请看这里:


如果原始表不是很大

select distinct * from origin_table into temp_table;
truncate table origin_table;
insert into origin_table select * from temp_table ;
drop table temp_table;

还有其他列可以用来区分行吗?@Joees有一个可能重复的@Martin:“如何删除重复项”似乎是有史以来重复最多的问题。哈哈!也许这篇文章只是在讽刺。+1:学到了一些新东西。我不知道您可以使用CTE作为删除操作的目标。
insert into table_new
   Select col1, col2, min(pk) as pk from table_old
   group by col1, col2

-- debug table_new

drop table_old