mysql 删除重复数据 保留一个,MySQL删除重复记录只保留一条

先说一下需求,最近做获取微信用户openid的时候  由于Chrome拉数据的时候出了问题,100万的数据  重复了80多万。那么这里需要把openid去重

附录:查询表数量相关

SELECT COUNT(age) FROM tableA

SELECT COUNT(DISTINCT age) from tableA

1.网上的一种说法,我试了一半不试了,太™慢了这里贴出来

先对要去重的表进行索引(处理重复的那个字段).将数据group by后导入到新的表中,导入时,可能需要分多次导入,因为电脑的内存有限,设置一下tmp_table_size或许可以一下子多导点

使用sql如下: Insert into Table2 select * from Table1 group by 重复字段名称 limit 100000

使用以上SQL,并个性Limit参数多进行几次导入操作即可

Insert into m_temp select * from temps group by openid limit 440000,10000;

2.这个方法亲测可以用  delete from 表名 where 字段ID in (select * from (select max(字段ID) from 表名 group by 重复的字段 having count(重复的字段) > 1) as b);

delete from temps where id in (select * from (select max(id) from temps group by openid having count(openid) > 1) as b);

我用的是navicat处理,执行了几次才完成

e44da30cf27a17022a0082d72e47bdbd.pnged1e846260ee7d1ed52ad46fea8d5183.pngb73b0de075b5ee747d310a6fb1c922fc.png1c4f9da743027b4544e6de177f5853f4.png9d733cafb97b42823c26d346005d0bbc.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值