假设我有一个表items
,其中有一个名为priority
的整数列,我正尝试从另一个表中进行更新。 (另一个表是一个临时表,我已经在其中预先计算了要应用的所有合适的priority
值。)
UPDATE "items" SET "priority" = (
SELECT "newPriority" FROM "newPriorities"
);
最终发生的是,items
中的所有条目的priority
都设置为从newPriorities
子查询返回的 first 值。
如何为每个记录将priority
设置为不同?换句话说,如何更新items
表中的所有priority
正确的newPriorities
值?
items
id priority /* some other, unreleated columns */
2108f97e-e1ce-47bf-97fd-c20699d2aa27 0
fae2347c-8644-47ba-931f-3d3cf70d3565 1
bd5ed046-47fa-49d9-9b40-2aa920511cf2 3
1fc57417-93e1-4382-8246-c4f9d117a55a 4
2ab4afbc-aa56-45af-8509-a7d9377e689d 5
7407a3a5-d410-4190-81c8-54d672f22c8d 6
1b21b57e-e907-4c25-af00-94bbf941df63 7
newPriorities
id newPriority
2108f97e-e1ce-47bf-97fd-c20699d2aa27 15
fae2347c-8644-47ba-931f-3d3cf70d3565 22
bd5ed046-47fa-49d9-9b40-2aa920511cf2 554
1fc57417-93e1-4382-8246-c4f9d117a55a 8
2ab4afbc-aa56-45af-8509-a7d9377e689d 3
7407a3a5-d410-4190-81c8-54d672f22c8d 6
1b21b57e-e907-4c25-af00-94bbf941df63 743
所需结果:将newPriority
列值复制到items
。
答案 0 :(得分:1)
您似乎想要:
UPDATE "items" as i
SET "priority" = (SELECT "newPriority"
FROM "newPriorities" np
WHERE np.id = i.id
);