我有一个表,需要删除第二次及以后出现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的第一次出现,但我需要保留它们的第一次出现。请指教。
答案 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