UPDATE USER
SET user_name = 'zhangsan'
WHERE
user_name = (
SELECT
u1.user_name
FROM
USER u1
WHERE
u1.id = '11'
);
执行sql报错:
[Err] 1093 - You can't specify target table 'user' for update in FROM clause
更新一张表的条件来自于查询这张表,在mysql中这是不允许的。
解决方法:在外面套一层查询
UPDATE USER
SET user_name = 'zhangsan'
WHERE
user_name = (
SELECT
us.user_name
FROM
(
SELECT
u1.user_name
FROM
USER u1
WHERE
u1.id = '11'
) us
);
本文介绍了一种常见的MySQL更新语句错误——当更新条件依赖于目标表自身查询时,如何通过嵌套子查询的方式避免You can't specify target table for update in FROM clause错误,提供了一个具体的解决方案。
1610

被折叠的 条评论
为什么被折叠?



