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

标签 sql sqlite

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

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


最终发生的是,所有items中的条目的priority都设置为从newPriorities子查询返回的第一个值。

如何将每个记录的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

最佳答案

您似乎想要:

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

关于sql - 使用子查询中的多个值进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55997684/

相关文章:

mysql - mysql中的内连接逻辑

SQL - 为表中的默认列值设置参数

sql - 如何找到树中最新节点的不同根节点(保存在闭包表中)?

php - 如何在 Apache 2.4 (Windows 7) 上为 PHP 5.6.14 配置 SQLite3?

java - Jtable ArrayIndexOutOfBounds异常-1

sql - 与日期比较时忽略 WHERE 子句中的时间戳

sql - 转换为表格后如何获取 VARRAY 项目的索引

visual-studio-2010 - 在 Visual Studio 2010 上手动安装 ".nupkg"包

sqlite - 升级 SQFLITE : Unhandled Exception: DatabaseException(table UsernameTable has no column named rememberMe (Sqlite code 1):

perl - 使用 Perl 缓存模块缓存 SQLite 表