• SQL如何查询重复记录并只保留最后添加的记录
  • 发布于 2个月前
  • 639 热度
    0 评论
  • BruceLe
  • 1 粉丝 37 篇博客
  •   

需求

因系统设计问题,导致实际业务中插入数据库的值有重复的情况,现在需要把重复的数据删除,只保留最后插入的数据。(数据库设计时,数据表有默认唯一的自增长ID)


解决思路:

1.先把重复重复记录的主键查询出来

2.查询重复内容的最大自增长ID

3.刷选出主键属于重复,且ID不在最大的自增长ID的数据,并进行删除

具体代码:

delete from [Emails] where ID not in (
  SELECT 
     max(ID) as ID
  FROM [Emails]
  group by [EmailAddress]
  having COUNT([EmailAddress])>1
  ) and [EmailAddress] in (
    SELECT 
      [EmailAddress]
  FROM [Emails]
  group by [EmailAddress]
  having COUNT([EmailAddress])>1
  )

用户评论