mysql异常:You can't specify target table 'my' for update in FROM clause

xiaoxiao2021-02-28  65

如果需要数据库中的数据与现有的数据进行操作 在mysql中,需要在查询原有数据时,需要将其作为中间表然后进行操作. oracle则不需要 举例 : 表结构 如下是错误的

INSERT INTO my (id, iden, NAME, age) VALUES ( 2, '2', '2', 1 + IFNULL( ( SELECT age FROM my WHERE id = 1 ), 0 ) );

报错信息:

[SQL]INSERT INTO my (id, iden, NAME, age) VALUES ( 2, '2', '2', 1 + IFNULL( ( SELECT age FROM my WHERE id = 1 ), 0 ) ); [Err] 1093 - You can't specify target table 'my' for update in FROM clause

mysql正确方式

INSERT INTO my (id, iden, NAME, age) VALUES ( 2, '2', '2', 1 + IFNULL( ( SELECT a.age FROM (SELECT age FROM my WHERE id = 1) a ), 0 ) );

OK

[SQL]INSERT INTO my (id,iden, NAME, age) VALUES ( 2, '2', '2', 1 + IFNULL( (SELECT a.age from (SELECT age FROM my WHERE id = 1) a), 0 ) ); 受影响的行: 1 时间: 0.007s
转载请注明原文地址: https://www.6miu.com/read-46003.html

最新回复(0)