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
);