我正在通过添加一个额外的挑战来详细说明这个问题(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值。因此对表格进行排序并不是没有问题的。
答案 0 :(得分:1)
如果您的SQLite版本为3.15.0+,则可以使用Row Values进行操作:
update t1 set
(col1, col2) = (
select col1, col2
from t2
where t2.id = t1.id
)
请参见demo。