更新下一行中的值 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`;
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;
我应该查询什么来更新下一个 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`;
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;