删除重复多次的ID,但保留第一次出现的ID

时间:2016-05-13 21:51:05

标签: sql sql-server sql-delete

我有一个表,需要删除第二次及以后出现ID的整行,但保留第一次出现的suCustomerID方式。 M表具有作为主键的ID和重复的CustometID。所以我需要删除所有具有重复CustomerID的行。

Delete From Table1 where ID IN (select ID From Table1 where count(distinct CutomerID) >=2 group by CustomerID)

上面的代码将删除所有ID,包括每个ID的第一次出现,但我需要保留它们的第一次出现。请指教。

2 个答案:

答案 0 :(得分:1)

此代码应该可以满足您的需求。

如果可以为Table1

提供完整的表模式,可能有更好的方法

如果您获得行号,然后忽略第一行:

;WITH cte 
AS 
(
  SELECT ID, 
     ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) AS Rn
  FROM [Table1]
)
DELETE cte WHERE Rn > 1

答案 1 :(得分:0)

delete a from(
Select dense_rank() OVER(PARTITION BY id ORDER BY id) AS Rn,*
from Table1)a
where a.Rn>1