gpt4 book ai didi

Mysql:如何用当前-x行的值更新当前行?

转载 作者:行者123 更新时间:2023-11-29 08:30:07 25 4
gpt4 key购买 nike

我有一个包含数百万行的表b。我想用前 n 行的值(比如前 3 行的值)更新列 result 。下面的代码可以以非常高的速度用前一行的值更新result,因为我没有使用join。但是,它无法使用前第三行的值更新结果

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

最佳答案

我相信你需要 N 个变量,即对于 3 行,你需要这样的东西:

set @previousRow1 = 0.0,@previousRow2 = 0.0,@previousRow3 = 0.0;
ALTER TABLE b ADD previousRow Double;
UPDATE `b` SET `result`=@previousRow1
, @previousRow1 = @previousRow2
, @previousRow2 = @previousRow3
, @previousRow3 = `x`;

不确定MySQL中的语法到底如何,目前无法测试。

当然,在大多数其他 DBMS 中,您可以使用 LEAD/LAG 函数,我认为 MySQL 中没有不涉及联接的解决方案。

关于Mysql:如何用当前-x行的值更新当前行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16868590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com