SQL:删除SQL Server中的重复记录

roc*_*kit 6 sql sql-server sql-server-2008-express sql-server-2008

我有一个sql server数据库,我预先加载了大量的数据行.

不幸的是,数据库中没有主键,表中现在有重复的信息.我并不担心没有主键,但我担心数据库中存在重复...

有什么想法吗?(原谅我是一个sql server newb)

Aar*_*and 13

嗯,这就是为什么你应该在桌子上有一个主键的原因之一.什么版本的SQL Server?对于SQL Server 2005及更高版本:

;WITH r AS
(
    SELECT col1, col2, col3, -- whatever columns make a "unique" row
    rn = ROW_NUMBER() OVER (PARTITION BY col1, col2, col3 ORDER BY col1)
    FROM dbo.SomeTable
)
DELETE r WHERE rn > 1;
Run Code Online (Sandbox Code Playgroud)

然后,所以你明天不必再这样做,第二天和之后的第二天,在表格上声明一个主键.