mysql根据字段删除重复记录

当我们的测试环境运行一段时间后总会产生一些垃圾数据,你见或不见, 他就在那里, 不悲不喜;直到某一天你在测试某段代码时发现他影响到了你,你决定把这些垃圾数据删除,下面我来和大家一起看如何删除这些重复数据。

1.查询出所有要删除的数据

select 重复字段名称,count(*) from 表名 group by 重复字段名称 having count(*) > 1; 

2.查询出待删除的数据的最小id

select 重复字段名称,min(id) from 表名
where 重复字段名称 in
  (select 重复字段名称 from (select 重复字段名称,count(*) from 表名 group by 重复字段名称 having count(*) > 1))
group by 重复字段名称;

3.删除数据

delete from 表名 
where 重复字段名称 in 
  (select 重复字段名称 from 
     (select 重复字段名称,count(*) from 表名 group by 重复字段名称 having count(*) > 1))
and id not in 
  (select id from (select 重复字段名称,min(id) id from 表名 where 重复字段名称 in
    (select 重复字段名称 from (select 重复字段名称,count(*) from 表名 group by 重复字段名称 having count(*) > 1))
  group by 重复字段名称))

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值