一尘不染

在MySQL中创建累积总和列

mysql

我有一个看起来像这样的表:

id   count
1    100
2    50
3    10

我想添加一个新的列,称为cumulative_sum,因此表如下所示:

id   count  cumulative_sum
1    100    100
2    50     150
3    10     160

是否有可以轻松完成此操作的MySQL更新语句?做到这一点的最佳方法是什么?


阅读 346

收藏
2020-05-17

共1个答案

一尘不染

如果性能是一个问题,则可以使用MySQL变量:

set @csum := 0;
update YourTable
set cumulative_sum = (@csum := @csum + count)
order by id;

或者,您可以删除该cumulative_sum列并在每个查询中对其进行计算:

set @csum := 0;
select id, count, (@csum := @csum + count) as cumulative_sum
from YourTable
order by id;

这以运行方式计算运行总和:)

2020-05-17