我有一个查找重复ID的查询
SELECT uniqueID2, count(uniqueID2) as 'count'
FROM gpDetailAfterMultiplier
group by uniqueID2
having count(uniqueID2) > 1
这会产生类似的输出:
uniqueID2 count
111111111 2
111111112 2
111111113 2
111111114 2
如何自动删除两个重复项中的一个?
我可以通过
一次做到这一点 DELETE top(1) from gpDetailAfterMultiplier where UniqueID2 = '111111111'
有没有办法做到这一点,以便它自动循环'通过每个结果并删除每个唯一ID的两个重复项之一?
答案 0 :(得分:1)
试试这个:
WITH CTE AS(
SELECT *,
RN = ROW_NUMBER()OVER(PARTITION BY uniqueID2 ORDER BY uniqueID2)
FROM gpDetailAfterMultiplier
)
DELETE FROM CTE WHERE RN > 1
它将删除表中的所有重复项。
在Fiddle中查看结果(在小提琴中使用SELECT
查询以查看要删除的记录)。