删除带有两个ifs的重复项

问题描述 投票:0回答:1

我们有一个Microsoft SQL Server表[database].[dbo].[UserInAppPurchase],其中包含以下列:

   [Id]
  ,[UserEmail]
  ,[UserId]
  ,[PurchaseDate]
  ,[ProductId]
  ,[TransactionId]
  ,[OriginalTransactionId]
  ,[ValidationTime]
  ,[ValidationReceipt]
  ,[ValidFrom]
  ,[ValidTo]
  ,[Platfrom]

因此,UserID可以通过错误获得同一购买的多个记录。副本将具有相同的ValidTo日期。

那么如何删除所有重复项呢?最后,每个UserId只有一个条目与特定的ValidTo日期。

谢谢您的帮助

安德烈亚斯

sql sql-server database sql-delete
1个回答
1
投票

想到具有可更新CTE的row_number()

with todelete as (
      select uiap.*, row_number() over (partition by userid, validto order by id) as seqnum
      from UserInAppPurchase uiap 
     )
delete from todelete
    where seqnum > 1;
© www.soinside.com 2019 - 2024. All rights reserved.