首页 > 解决方案 > 将几个列值从一个表复制到另一个匹配的 ID - SQLite

问题描述

我正在通过添加一个额外的挑战来详细说明这个问题(将列值从一个表复制到另一个匹配的 ID - SQLite )。

这个想法是当一个 id 匹配时,将几个列的值从一个表复制到另一个表。上述问题解决了如何在找到匹配的 id 时复制一列的内容。这里是@scaisEdge 发布的代码:

UPDATE t1 
SET value = (
    SELECT value 
    FROM t2 
    WHERE t1.ID = t2.ID)

但是,如果我们想从 t1.ID = t2.ID 的同一行更新几列呢?当然,对于要更新的​​每一列,可以运行几次,但是,这非常低效,因为我必须更新数百万行。我猜查询必须执行的逻辑比较越少,它就会越快。欢迎任何其他优化此任务的方法,ID 是唯一的,两个表具有相同的行数,并且在两个表中都可以找到完全相同的 ID 值。因此,对表格进行排序并非不可能。

标签: sqlitesetsql-update

解决方案


如果您的 SQLite 版本是 3.15.0+,您可以使用Row Values来做到这一点:

update t1 set 
(col1, col2) = (
  select col1, col2 
  from t2 
  where t2.id = t1.id 
)

请参阅演示


推荐阅读