码迷,mamicode.com
首页 > 数据库 > 详细

mysql重复记录的查询删除方法

时间:2016-12-12 19:45:21      阅读:222      评论:0      收藏:0      [点我收藏+]

标签:delete   group by   ini   sts   查找   lag   性能   查找表   bat   

1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select   peopleId from   people group by   peopleId having count (peopleId) > 1)

2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people 
where peopleId in (select   peopleId from people group by   peopleId   having count (peopleId) > 1)
and rowid not in (select min(rowid) from   people group by peopleId having count(peopleId )>1)

3、查找表中多余的重复记录(多个字段) 
SELECT * FROM C_Yyt
WHERE (Elon IN   (SELECT elon   FROM C_Yyt   GROUP BY elon, wd   HAVING COUNT(*) > 1)) AND (wd IN    (SELECT wd    FROM C_Yyt       GROUP BY elon, wd   HAVING COUNT(*) > 1))

4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in   (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in   (select peopleId,seq from vitae group by peopleId,seq having

count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

6、删除重复数据

1、将重复数据中的最小的id都找出来,并插入到一个临时表中;
2、再通过表关联删除掉重复的数据;
INSERT into line_pass_init select min(id) from tt_rps_line_passzone_info_init group by plan_send_batch_dt,line_id,passid,order_flag having count(*)>1
#性能低
DELETE from tt_rps_line_passzone_info_init where id not exists (select id from line_pass_init);
#性能高
delete from tt_rps_line_passzone_info_init a where not exists(select 1 from line_pass_stor_init b where a.id=b.id);

mysql重复记录的查询删除方法

标签:delete   group by   ini   sts   查找   lag   性能   查找表   bat   

原文地址:http://www.cnblogs.com/duanxz/p/6165323.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!