使用子查询中的多个值进行更新

时间:2019-05-06 01:00:24

标签: sql sqlite

假设我有一个表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

1 个答案:

答案 0 :(得分:1)

您似乎想要:

UPDATE "items" as i
    SET "priority" = (SELECT "newPriority" 
                      FROM "newPriorities" np
                      WHERE np.id = i.id
                     );