问题:
在MySQL数据库删除重复数据的时候遇到了一个问题。如下脚本:
DELETE FROM tmp WHERE id IN (
SELECT MAX(id) AS id FROM tmp GROUP BY name,age
)
会出现报错信息:
You can't specify target table 'tmp' for update in FROM clause
大致意思是,在同一语句中,不能先select出同一表中的某些值,再update这个表。
解决方法:
需要对上述脚本进行改造,如下:
DELETE FROM tmp WHERE id NOT IN (
SELECT t.id FROM (
SELECT MAX(id) AS tid FROM tmp GROUP BY name,age
) t
)
查询的时候增加一层中间表,就可以避免该错误。