更新下一行中的值 MYSQL

Update Value in next Row MYSQL

我应该查询什么来更新下一个 ROW2 等等,这些将从上一行中扣除。

更新 tbl SET BAL= ''

第 1 行有 10 个 QTY 和 5 个 BAL

在下一个第 2 行中,获取前一个 BAL,即 5,然后减去第 2 行中的 1 个 QTY,然后更新第 2 行 BAL = 4,依此类推。

我的Table

Row QTY BAL
1 10 5
2 1 0
3 4 0

期望的输出

Row QTY BAL
1 10 5
2 1 4
3 4 0
UPDATE MyTable, ( SELECT `Row`, `QTY`,
                         @balance := @balance - QTY AS BAL
                  FROM MyTable
                  CROSS JOIN ( SELECT @balance := QTY + BAL
                               FROM MyTable
                               ORDER BY `Row` LIMIT 1 ) as init
                  ORDER BY `Row` ASC) data_for_update
SET MyTable.BAL = data_for_update.BAL
WHERE MyTable.`Row` = data_for_update.`Row`;

fiddle


UPDATE MyTable
JOIN ( SELECT t1.`Row`, t1.QTY, t3.init_balance - SUM(t2.QTY) BAL
       FROM MyTable t1
       JOIN MyTable t2 ON t1.`Row` >= t2.`Row`
       CROSS JOIN ( SELECT QTY + BAL init_balance
                    FROM MyTable
                    ORDER BY `Row` LIMIT 1 ) t3
       GROUP BY t1.`Row`, t1.QTY, t1.BAL, t3.init_balance) data_for_update 
                ON MyTable.`Row` = data_for_update.`Row`
SET MyTable.BAL = data_for_update.BAL;

fiddle