如何根据上一行的两列更新表的每一行?



我有以下表格:

如果你的SQLite版本是3.33.0+,你可以使用UPDATE ... FROM...语法与SUM()窗口函数:

UPDATE tablename AS t1
SET offset = t2.offset
FROM (
SELECT Id, SUM(length) OVER (ORDER BY Id ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) offset
FROM tablename 
) AS t2
WHERE t2.Id = t1.Id AND t2.offset IS NOT NULL;

对于以前的版本,使用关联子查询:

UPDATE tablename AS t1
SET offset = COALESCE(
(SELECT SUM(t2.length) FROM tablename t2 WHERE t2.Id < t1.Id), 
t1.offset
);

最新更新