MySQL 语法问题:You can‘t specify target table ‘xxx‘ for update in FROM clause. 原因及解决方法

时间:2022-07-25
本文章向大家介绍MySQL 语法问题:You can‘t specify target table ‘xxx‘ for update in FROM clause. 原因及解决方法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

报错信息如下: [Code: 1093, SQL State: HY000] You can’t specify target table ‘bd_bankaccbas’ for update in FROM clause

译文: 不能在 FROM 子句中指定目标表 ‘bd_bankaccbas’ 进行更新。

有问题的 SQL 语句如下,它在 oracle 数据库的语法是支持的,但是 mysql 就不支持直接这么写: fromupdate 都是同一张表。

update bd_bankaccbas set modifier = 
(select creator from bd_bankaccbas where accnum = '88004') 
where accnum = '88004';

解决方法: 我们在中间加个过渡就好了。

update bd_bankaccbas set modifier = 
(select t.creator from (select creator from bd_bankaccbas where accnum = '88004') t) 
where accnum = '88004';