【问题标题】:UPDATE with multiple values from subquery使用来自子查询的多个值进行更新
【发布时间】:2019-09-23 15:29:56
【问题描述】:

假设我有一个表items,其中有一个名为priority 的整数列,我正试图从另一个表中更新它。 (这个另一个表是一个临时表,我已经预先计算了所有要应用的适当的priority 值。)

UPDATE "items" SET "priority" = (
  SELECT "newPriority" FROM "newPriorities"
);

最终发生的事情是items 中的所有条目都将其priority 设置为从newPriorities 子查询返回的first 值。

如何将priority 设置为对每条记录都不同?换句话说,如何更新items 以获取newPriorities 表中所有正确的priority 值?

样本数据

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

【问题讨论】:

  • 您需要一个关联子句的键。样本数据和期望的结果会有所帮助。
  • @GordonLinoff 谢谢,有钥匙!我已经发布了一些示例数据和特定的期望结果。

标签: sql sqlite


【解决方案1】:

你似乎想要:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-19
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多