我有一个表1,其中包含许多实体,另一个表(表2)具有2列:表1的主键和第二列。表1中的一个实体还有其他一些实体(也来自表1),由表2的第二列分配
例:
id | type | ownerId
1 | bigObject | 1
2 | littleObj | 3
3 | littleObj | 3
id | key
1 | 2
1 | 3
我想将所有littleObjects的ownerId更新为大对象的ownerId。
我试过的
UPDATE entity
SET ownerid = (SELECT ownerid
FROM entity
WHERE id = 1)
WHERE id IN (SELECT key
FROM table_b
WHERE id = 1)
;
但是它说您不能在FROM子句中指定目标表“实体”进行更新
最佳答案
您必须使用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)