我有一张有数b
百万行的表。我想result
用前 n 行的值(比如前 3 行的值)更新列。下面的代码可以 result
以非常高的速度更新前一行的值,因为我没有使用过join
。但是,它不能 result
用前 3 行的值更新。
set @previousRow = 0.0;
ALTER TABLE b ADD previousRow Double;
UPDATE `b` SET `result`=@previousRow , previousRow = @previousRow:=`x`;
ALTER TABLE b DROP previousRow;
上面的查询以非常高的速度执行此操作:
id, x, result
1 , 4, 0.0
2 , 6, 4
3 , 5, 6
4 , 6, 5
5 , 5, 6
6 , 3, 5
7 , 2, 3
我想做的事
id, x, result
1 , 4, null
2 , 6, null
3 , 5, null
4 , 6, 4
5 , 5, 6
6 , 3, 5
7 , 2, 6
8 , 7, 5
9 , 9, 3