当前位置:博客首页>>PHP >> 阅读正文

使用唯一索引方法删除mysql重复记录

作者: 郑晓 分类: PHP 发布于: 2012-10-29 00:30 浏览(6,985) 评论(1)


前两天由于操作失误,将线上的数据库一表中插入了近六万条的重复记录,其中有用的数据也就几千条。那几万 条的重复数据的删除是个问题,因为整个表现在已经有二十多万的数据,一开始使用两个select 加group by来进行分组后删除,不过语句执行不了,一运行那mysql直接卡掉了…

不知为什么二十万的数据就能直接把mysql给搞死。。。难道语句有问题?后来又试了下使用left join 更是坑爹。。。作为一个菜鸟,还是应该多问baidu和google。在网上找了个方法可以直接解决这些重复数据的删除问题,虽然可能这个方法不是很好,但最起码解决了我的问题。

方法是使用唯一索引这个功能,给重复的那个字段创建唯一索引来让mysql自动删除重复记录,具体语句实例如下:

alter ignore table yourtablename add unique idx_name (test);

这里是给yourtablename表中的test字段创建唯一索引的语句,运行后会将test字段的值变成唯一,重复的数据都将会被删除。

由于我是只删除某一时段的数据,所以我这里使用的是一个笨办法,先将原表导出,将这个区间内的所有insert记录都剪贴出来导入本地库中,然后执行上面的语句创建唯一索引,执行后将结果导出,把insert 的记录语句重新贴回去,再导入线上库中完成!

操作数据库时切记进行备份!!

       

本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。

本文永久链接: https://www.zh30.com/unique-index-method-to-remove-mysql-duplicate-records.html

使用唯一索引方法删除mysql重复记录:目前有1 条留言

用户评论头像 月小升的技术博客发表于 2012年11月02日 12:20[回复]

我每次遇到这问题,也采取这个措施,不过每次都写一段java来执行下。