如何从SQL Server中删除重复的行?

时间:2012-02-03 11:07:43

标签: sql sql-server

我在多个SQL Server表中有重复的行,但ID不同。是否有可以运行的查询来删除这些行?

2 个答案:

答案 0 :(得分:2)

因为你的回答并不具体,所以我可以给你一个通用答案。

您可以使用SQL Server中的ROW_NUMBER功能。例如:

WITH CTE (COl1,Col2, DuplicateCount)
AS
(
SELECT COl1,Col2,
ROW_NUMBER() OVER(PARTITION BY COl1,Col2 ORDER BY Col1) AS DuplicateCount
FROM DuplicateRcordTable
)
DELETE
FROM CTE
WHERE DuplicateCount > 1
GO

请查看此link以获取更多信息。

答案 1 :(得分:0)

以下是一个完整的例子:

create table #test (
id int,
value int
)

insert into #test values (1,2), (2,2), (3,1), (4,2)


delete #test
where id not in ( select min(id) from #test group by value)

drop table #test

除了ids之外,它将删除所有value min(id)的{​​{1}}。

您只需要更改group by列,即可考虑重复行所需的所有内容。