使用同一表中另一行的数据更新行

时间:2013-04-16 06:38:39

标签: mysql sql sql-update

UPDATE user SET 
                tw_oauth_token=(SELECT tw_oauth_token FROM user WHERE id=27),
                tw_oauth_token_secret = (SELECT tw_oauth_token_secret FROM user WHERE id=27),
                tw_user_id = (SELECT tw_user_id FROM user WHERE id=27),
                handler = (SELECT handler FROM user WHERE id=27),
                merged=1 WHERE id=26

我们的想法是从id = 27的用户表中选择数据,并更新id = 26的同一个表。

我遇到以下错误:

#1093 - You can't specify target table 'user' for update in FROM clause

任何帮助将不胜感激。感谢

2 个答案:

答案 0 :(得分:1)

UPDATE  user a
        CROSS JOIN user b
SET     a.tw_oauth_token = b.tw_oauth_token,
        a.tw_oauth_token_secret = b.tw_oauth_token_secret,
        a.tw_user_id = b.tw_user_id,
        a.handler = b.handler,
        a.mrged = 1
WHERE   a.ID = 26 AND
        b.ID = 27

答案 1 :(得分:1)

为什么不尝试根据您的表创建虚拟表,然后使用该视图上的user语句更新SELECT表。像这样:

CREATE VIEW view_user AS
SELECT *
FROM user;

然后在更新中使用view_user。