Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于MySQL中的前一行更新值_Mysql_Sql_Window Functions - Fatal编程技术网

基于MySQL中的前一行更新值

基于MySQL中的前一行更新值,mysql,sql,window-functions,Mysql,Sql,Window Functions,这个问题是基于我前面的问题。 而不是获取select语句, 我需要一个update语句来使用updatequery填充rum列 输入: +---+--------+------+ |CID| number | rum | +---+--------+------+ | 1 | 1.0000 | NULL | | 3 | 2.0000 | NULL | | 5 | 2.0000 | NULL | | 6 | 4.0000 | NULL | +---+--------+------+ 输出:

这个问题是基于我前面的问题。

而不是获取select语句, 我需要一个update语句来使用updatequery填充rum列

输入:

+---+--------+------+
|CID| number | rum  |
+---+--------+------+
| 1 | 1.0000 | NULL |
| 3 | 2.0000 | NULL |
| 5 | 2.0000 | NULL |
| 6 | 4.0000 | NULL |
+---+--------+------+
输出:

+---+--------+------+
|CID| number | rum  |
+---+--------+------+
| 1 | 1.0000 | NULL |
| 3 | 2.0000 |100.0 |
| 5 | 2.0000 |  0.0 |
| 6 | 4.0000 |100.0 |
+---+--------+------+
公式:

rum = (currNumber - prevNumber) / prevNumber * 100

您可以在
更新中使用
连接
和窗口函数。一种方法是:

update t join
       (select t.*, lag(number) over (order by cid) as prev_number
        from t
       ) tt
       on tt.cid = t.cid
    set rum = (number - prev_number) * 100 / prev_number;

您可以在
更新中使用
连接
和窗口函数。一种方法是:

update t join
       (select t.*, lag(number) over (order by cid) as prev_number
        from t
       ) tt
       on tt.cid = t.cid
    set rum = (number - prev_number) * 100 / prev_number;

-从MySQL 8.0Lag函数开始的对LAG函数的本机支持在MySQL中不起作用。我需要一个更新查询。除了Join和group Bys之外,我对sql没有任何掌握。您的MySql版本是什么?感谢lag函数起作用。我以前的mariadb没有起作用,但现在起作用了。-从MySQL 8.0Lag函数开始的对LAG函数的本机支持在MySQL中不起作用。我需要一个更新查询。除了Join和group Bys之外,我对sql没有太多的了解。你的MySql版本是什么?感谢lag函数,它在我以前的mariadb上不起作用,但现在起作用了。