各位用户为了找寻关于mysql中You can’t specify target table for update in FROM clause错误解决方法的资料费劲了很多周折。这里教程网为您整理了关于mysql中You can’t specify target table for update in FROM clause错误解决方法的相关资料,仅供查阅,以下为您介绍关于mysql中You can’t specify target table for update in FROM clause错误解决方法的详细内容

mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。 例如下面这个sql:

代码如下: delete from tbl where id in (         select max(id) from tbl a where EXISTS         (             select 1 from tbl b where a.tac=b.tac group by tac HAVING count(1)>1         )         group by tac )

 

改写成下面就行了:

 

代码如下: delete from tbl where id in (     select a.id from     (         select max(id) id from tbl a where EXISTS         (             select 1 from tbl b where a.tac=b.tac group by tac HAVING count(1)>1         )         group by tac     ) a )

 

也就是说将select出的结果再通过中间表select一遍,这样就规避了错误。注意,这个问题只出现于mysql,mssql和oracle不会出现此问题。