【发布时间】:2010-09-06 08:16:01
【问题描述】:
从相当大的 SQL Server 表(即 300,000 多行)中删除重复行的最佳方法是什么?
由于RowID 标识字段的存在,这些行当然不会是完全重复的。
我的表
RowID int not null identity(1,1) primary key,
Col1 varchar(20) not null,
Col2 varchar(2048) not null,
Col3 tinyint not null
【问题讨论】:
-
阅读本文的 PostgreSQL 用户的快速提示(很多,取决于它链接到的频率):Pg 不会将 CTE 术语公开为可更新的视图,因此您不能
DELETE FROM直接使用 CTE 术语。见stackoverflow.com/q/18439054/398670 -
@CraigRinger 对于 Sybase 也是如此 - 我在这里收集了剩余的解决方案(对 PG 和其他人也应该有效:stackoverflow.com/q/19544489/1855801(只需替换 @ RowID 列的 987654327@ 函数(如果有)
-
只是在这里添加一个警告。在运行任何重复数据删除过程时,请务必先仔细检查要删除的内容!这是经常意外删除好数据的领域之一。
标签: sql-server tsql duplicates