mysql删除重复的数据并保持唯一性
今天在爬虫入库的时候发现忘记设置了唯一性,导致有很多的数据都重复了
所以我今天特意百度查询,找到了一个非常好的sql语句,可以完美的解决这个问题
DELETE news_history FROM news_history, ( SELECT min( id ) id, title, url FROM news_history GROUP BY title, url HAVING count(*) > 1 ) t2 WHERE news_history.title = t2.title AND news_history.url = t2.url AND news_history.id > t2.id;
这个sql语句的意思就是删除重复的数据并保留id最小的哪一个,并创建一个临时表来查询去重。
然后设置唯一性的话,因为我的url是惟一的,所以给他设置唯一性的索引就可以了,下面图片的第二个是唯一性的索引
然后使用 insert ignore 就完美的解决了
删除重复的数据自增id就不是连续的了,看起来非常不友好,我在上一篇博客有解决方法,有兴趣的可以看一下