使用select子句设置失败

时间:2014-10-22 12:49:30

标签: mysql sql database

我有一个包含许多实体的表1和另一个包含2列的表(表2):表1的主键和第二列。表1中的实体具有由表2中的第二列分配的若干其他实体(也来自表1) 例:

 id | type | ownerId
1 | bigObject | 1
2 | littleObj | 3
3 | littleObj | 3

id | key
1 | 2
1 | 3

我希望将所有littleObjects的ownerId更新为big对象的ownerId。
我尝试了什么:

UPDATE entity
SET ownerid = (SELECT ownerid
                 FROM entity
                 WHERE id = 1)
WHERE id IN (SELECT key
                FROM table_b
                WHERE id = 1)
;

但是它说你不能在FROM子句

中指定目标表,实体'进行更新

1 个答案:

答案 0 :(得分:0)

您必须使用MySQL,因为这会产生错误。请改用此表格:

UPDATE entity e CROSS JOIN
       (SELECT ownerid
        FROM entity
        WHERE id = 1
       ) e1
    SET e.ownerid = e1.ownerid
WHERE id IN (SELECT key
             FROM table_b
             WHERE id = 1)