假设我的表格如下所示:
id count sub_total
1 10 NULL
2 15 NULL
3 10 NULL
4 25 NULL
如何更新此表使其外观如下所示?
id count sub_total
1 10 10
2 15 25
3 10 35
4 25 60
我可以在应用程序层中轻松完成此操作.但是我想学习如何在MySQL中做到这一点.我一直在尝试使用SUM(CASE WHEN …)和其他分组的许多变体,但无济于事.
解决方法:
如果您的id字段是连续的且在增长,则相关子查询是一种方法:
select *, (select sum(count) from t where t.id <= t1.id)
from t t1
或作为联接:
select t1.id, t1.count, sum(t2.count)
from t t1
join t t2 on t2.id <= t1.id
group by t1.id, t1.count
order by t1.id
更新表(假设sub_total列已存在):
update t
join (
select t1.id, sum(t2.count) st
from t t1
join t t2 on t2.id <= t1.id
group by t1.id
) t3 on t.id = t3.id
set t.sub_total = t3.st;
标签:sum,case,mysql
来源: https://codeday.me/bug/20191119/2039537.html