我们有一个Microsoft SQL Server表[database].[dbo].[UserInAppPurchase]
,其中包含以下列:
[Id]
,[UserEmail]
,[UserId]
,[PurchaseDate]
,[ProductId]
,[TransactionId]
,[OriginalTransactionId]
,[ValidationTime]
,[ValidationReceipt]
,[ValidFrom]
,[ValidTo]
,[Platfrom]
我们有多个条目具有相同的[TransactionID]
,但每TransactionID
只有一行。因此,我们希望删除具有相同TransactionID
的所有行,并保留具有最低[Id]
的行。
感谢您的帮助
安德烈亚斯
答案 0 :(得分:2)
一种不错的方法使用可更新的CTE:
with todelete as (
select uiap.*,
row_number() over (partition by TransactionID order by id) as seqnum
from UserInAppPurchase uiap
)
delete todelete
where seqnum > 1;
当然,您可以使用与其他数据库更兼容的其他方法,例如:
delete uiap from UserInAppPurchase uiap
where uiap.id > (select min(uiap2.id) from UserInAppPurchase uiap2 where uiap2.TransactionID = uiap.TransactionID);