如果需要数据库中的数据与现有的数据进行操作 在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 clausemysql正确方式
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