您的位置:首页 > 数据库 > MySQL

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

2017-08-06 11:39 375 查看
如果需要数据库中的数据与现有的数据进行操作

在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐