0

我正在尝试从存储在同一个表的另一行中的值更新几个 BLOB 字段:

UPDATE users SET user_permissions = (
                                     SELECT user_permissions 
                                       FROM users 
                                       WHERE user_id=1
                                    ) 
WHERE user_id IN (3,4,5)

但这失败并出现以下错误:

[Err] 1093 - 您不能在 FROM 子句中指定目标表 'users' 进行更新

有没有办法做到这一点?

4

2 回答 2

3

您可以通过像这样的加入更新来实现这一点:

UPDATE users u1
  JOIN users u2
    ON u2.user_id = 1
   SET    u1.user_permissions = u2.user_permissions
 WHERE  u1.user_id IN (3,4,5);

看到这个 SQLFiddle

于 2013-06-04T09:08:07.343 回答
2

我认为您可以通过使用UPDATE带有INNER JOIN

UPDATE users a
LEFT JOIN users b
ON a.user_id = b.user_id 
SET a.user_permission = b.user_permission
WHERE a.user_id IN (3,4,5)
AND b.user_id = 1
于 2013-06-04T09:03:40.013 回答