数据库重复数据删除处理

多说两句:最近工作在做旧数据的导入,按照要求要去重复,所以总结了一下,写下第一篇博客来简单记录,这只能在数据库层面来操作,并且是单表,无关联,而实际,唉,写程序处理外键关系,在写程序删除。

需求:根据某个字段,去除重复记录。例如:mermber表,name字段存在重复值,有多个张三存在,要求只保留最新添加的一条记录,删除其他多余重复的记录;

idcreate_timename
12017-12-16张三
22017-11-15张三
32017-11-12李四

实现: 
查询重复数据sql

//查询重复数据sql
select * from member where name in (select name from member group by name having(count(*))>1);
  •  

结果:

idcreate_timename
12017-12-16张三
22017-11-15张三

删除重复记录sql

//删除重复数据sql
delete from member where name in 
  (select name from member group by name having count(name) > 1)
  and 
  create_time in (select min(create_time) from member group by name having count(name)>1);
  •  

结果:

idcreate_timename
12017-12-16张三
32017-11-12李四

重复数据多条

idcreate_timename
12017-12-16张三
22017-11-15张三
22017-11-16张三
32017-11-12李四

sql实现:

//删除多条重复数据sql
delete from member where name in 
   (select name from member group by name having count(name) > 1)
   and 
   create_time not in (select max(create_time) from member group by name having count(name)>1);
  •  

结果:

idcreate_timename
12017-12-16张三
32017-11-12李四

注:数据无价,生产环境批量删除操作,请先做好备份。

转载于:https://my.oschina.net/coffeeCode/blog/1082874

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值