2

可能重复:
如何使用 SQL 删除重复行?

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

4

3 回答 3

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
于 2012-10-10T23:11:06.017 回答
1

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

于 2012-10-10T11:25:29.777 回答
0

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

  1. 您必须从给定的表结构动态创建临时表
  2. 然后将所有不同的行从表插入到临时表
  3. 最后截断表
  4. 并从临时表中插入行并删除临时表

如果您有问题,那么我必须为您编写 sp。

于 2012-10-10T11:11:52.533 回答