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