数据库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