将几个列值从一个表复制到另一个匹配ID-SQLite

时间:2019-08-29 22:44:24

标签: sqlite set sql-update

我正在通过添加一个额外的挑战来详细说明这个问题(Copy Column Value from One table into Another Matching IDs - SQLite)。

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

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

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

1 个答案:

答案 0 :(得分:1)

如果您的SQLite版本为3.15.0+,则可以使用Row Values进行操作:

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

请参见demo