如何在MySQL中向表中添加小计?

时间:2015-08-13 14:57:42

标签: mysql sum case

假设我的表格如下:

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...和其他分组尝试了很多变化无济于事。

1 个答案:

答案 0 :(得分:3)

如果您的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;

Sample SQL Fiddle显示更新。