我有一个sql server数据库,我预载了大量的数据行。SQL:删除SQL Server中的重复记录
不幸的是,数据库中没有主键,表中现在有重复的信息。我并不担心没有主键,但我担心数据库中存在重复...
有什么想法吗? (原谅我是一个sql服务器newb)
我有一个sql server数据库,我预载了大量的数据行。SQL:删除SQL Server中的重复记录
不幸的是,数据库中没有主键,表中现在有重复的信息。我并不担心没有主键,但我担心数据库中存在重复...
有什么想法吗? (原谅我是一个sql服务器newb)
嗯,这是你应该在桌子上有一个主键的原因之一。什么版本的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;
然后,这样你就不必做这个,明天又和第二天,在那之后的日子,宣布对表的主键。
谢谢,这个解决了我的问题! – rockit 2009-11-20 20:06:48
看看这个。 “
”删除跨表中所有列重复的数据并不难,但根据您的业务规则删除数据时,您认为重复的数据会被SQL Server视为唯一数据“
http://www.sql-server-performance.com/articles/dba/delete_duplicates_p1.aspx
假设您的表格由COL1和COL2唯一。
这里是一个办法做到这一点:
SELECT *
FROM (SELECT COL1, COL2, ROW_NUMBER() OVER (PARTITION BY COL1, COL2 ORDER BY COL1, COL2 ASC) AS ROWID
FROM TABLE_NAME)T
WHERE T.ROWID > 1
的ROWID> 1将使你只能选择重复的行。
这篇文章关于Deleting duplicate records in SQL Server没有主键的表可以帮助你解决问题。
那么,你如何确定重复? – 2009-11-20 19:02:00
http://www.lmgtfy.com/?q=Deleting+duplicate+records+in+SQL+Server – 2009-11-20 19:05:13
您正在使用哪个版本的SQL Server? 2000年,2005年,2008年? – MaxiWheat 2009-11-20 19:08:36