You can‘t specify target table ‘XXXX‘ for update in FROM clause mysql错误解决方法

mysql数据库同时对一个表进行查询和删改操作时,会报“You can't specify target table 'XXXX' for update in FROM clause”错误,无法执行,错误提示的意思是:不能在 FROM 子句中指定目标表 ‘XXXX’ 进行更新。

这种写法在oracle中是支持的,在mysql里不支持,但是可以通过一下方式解决:嵌套一层子查询。示例如下:

无法执行的错误sql:

delete from table_name 
where id not in(select max(id) id from table_name  group by name)

增加子查询,可以正确执行的sql:

delete from table_name 
where id not in(select id from (select max(id) id from table_name  group by name) as a)

区别就是在from语句外面嵌套了一层子查询。

你可能感兴趣的:(mysql,数据库,mysql错误,子查询)