How to delete all duplicate records from SQL Table?

后端 未结 4 445

Hello I have table name FriendsData that contains duplicate records as shown below

fID UserID  FriendsID       IsSpecial      CreatedBy
---         


        
4条回答
  •  梦谈多话
    2020-12-30 14:26

    It seems counter-intuitive, but you can delete from a common table expression (under certain circumstances). So, I'd do it like so:

    with cte as (
      select *, 
         row_number() over (partition by userid, friendsid order by fid) as [rn]
      from FriendsData
    )
    delete cte where [rn] <> 1
    

    This will keep the record with the lowest fid. If you want something else, change the order by clause in the over clause.

    If it's an option, put a uniqueness constraint on the table so you don't have to keep doing this. It doesn't help to bail out a boat if you still have a leak!

提交回复
热议问题