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就不是连续的了,看起来非常不友好,我在上一篇博客有解决方法,有兴趣的可以看一下

原文地址:https://www.cnblogs.com/weifeng-888/p/11640519.html