sql查询删除重复数据

数据库UserInfo

删除重复数据 即删除重复的用户名手机号 同一个用户名手机号只保留一个用户

01、根据多个字段查询重复数据

with data1 as(

select MobilePhone,Name from UserInfo
group by MobilePhone,Name
having count(*)>1

),

02、对重复数据分配编号

data2 as (

select u.*,row_number() over(partition by u.MobilePhone,u.Name order by Id ) rowNum from UserInfo u
inner join data1 d on u.Name=d.Name and u.MobilePhone=d.MobilePhone

),

03、查询需要删除数据的主键(每个小组里的编号为一的保留 其它删除)

data3 as(

select Id from data2 where rowNum>1

)

04、根据主键删除数据

delete from UserInfo
where Id in (select Id from data3)

删除后

附 sqlserver中分区函数partition by的用法 http://www.cnblogs.com/zhangchengye/p/5473860.html

原文地址:https://www.cnblogs.com/zhangchengye/p/5473975.html