删除重复多次的 ID,但保留第一次出现的 ID
Delete IDs that repeat more then once, but leave the first occurrence
我有一个 table 并且需要删除 ID 第二次和后续出现的整行,但顺便留下第一次出现的 suCustomerID。 M table 具有作为主键的 ID 和重复的 CustometID。所以我需要删除所有具有重复 CustomerID 的行。
Delete From Table1 where ID IN (select ID From Table1 where count(distinct CutomerID) >=2 group by CustomerID)
上面的代码将删除所有 ID,包括每个 ID 的第一次出现,但我需要保留它们的第一次出现。请指教。
这段代码应该能满足您的需求。
如果您可以为表 1
提供完整的 table 架构,可能会有更好的方法
如果你获取行号然后忽略第一个:
;WITH cte
AS
(
SELECT ID,
ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) AS Rn
FROM [Table1]
)
DELETE cte WHERE Rn > 1
delete a from(
Select dense_rank() OVER(PARTITION BY id ORDER BY id) AS Rn,*
from Table1)a
where a.Rn>1
我有一个 table 并且需要删除 ID 第二次和后续出现的整行,但顺便留下第一次出现的 suCustomerID。 M table 具有作为主键的 ID 和重复的 CustometID。所以我需要删除所有具有重复 CustomerID 的行。
Delete From Table1 where ID IN (select ID From Table1 where count(distinct CutomerID) >=2 group by CustomerID)
上面的代码将删除所有 ID,包括每个 ID 的第一次出现,但我需要保留它们的第一次出现。请指教。
这段代码应该能满足您的需求。
如果您可以为表 1
提供完整的 table 架构,可能会有更好的方法如果你获取行号然后忽略第一个:
;WITH cte
AS
(
SELECT ID,
ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID) AS Rn
FROM [Table1]
)
DELETE cte WHERE Rn > 1
delete a from(
Select dense_rank() OVER(PARTITION BY id ORDER BY id) AS Rn,*
from Table1)a
where a.Rn>1