[原创] mysql删除重复的数据

mysql 去重

2015-11-05 2249

今天在执行了爬虫代码后,发现数据库中多了很多重复数据。检查代码后发现,居然没有在save之前把重复的记录删掉。悲剧了,先写sql直接删除吧。当我把这段代码在数据库中执行后,mysql居然报错了

DELETE FROM xx表
WHERE id NOT IN (SELECT MAX(id) AS id
	FROM xx表
	GROUP BY 列名)

报错内容为

//You can't specify target table 表名 for update in FROM clause

想了想后,大概意思是不能先select出同一表中的某些值,再update这个表(在同一语句中),那就把查询结果再查一次吧。直接修改代码,居然好了

DELETE FROM xx表
WHERE id NOT IN (SELECT a.id
	FROM (SELECT MAX(id) AS id
		FROM xx表
		GROUP BY 列名
		) a)