删除保留原始的重复记录

时间:2012-10-10 11:08:06

标签: sql sql-server sql-server-2005

  

可能重复:
  How to delete duplicate rows with SQL?

我有一个没有主键的表和一个重复条目的列。我想删除所有重复项,在表中保留一个条目。请帮忙

3 个答案:

答案 0 :(得分:4)

由于您使用的是SQL Server 2005+,因此可以使用CTE执行此操作:

;WITH cte AS 
(
  SELECT ROW_NUMBER() OVER (PARTITION BY Col1, Col2, Col3  ORDER BY (SELECT 0)) RN
  FROM  yourtable
)
DELETE FROM cte
WHERE RN > 1

答案 1 :(得分:1)

将Row_Number函数与Partition By所有字段一起使用,并仅保留RN = 1的行。

答案 2 :(得分:0)

创建存储过程和过程内部:

  1. 您必须动态
  2. 从给定的表结构创建临时表
  3. 然后将表中的所有不同行插入临时表
  4. 最后截断表
  5. 和atlast从临时表插入行并删除临时表
  6. 如果您遇到问题,我必须为您编写sp。