用于计算部分和的MySQL查询

时间:2009-10-17 23:09:24

标签: stored-procedures mysql

我应该在MySQL数据库中执行哪些查询来获取包含源表的部分总和的结果?

例如,当我有桌子时:

Id|Val
1 | 1
2 | 2
3 | 3
4 | 4

我想得到这样的结果:

Id|Val
1 | 1
2 | 3 # 1+2
3 | 6 # 1+2+3
4 | 10 # 1+2+3+4

现在我使用包含游标和while循环的存储过程获得此结果。我想找到一个更好的方法来做到这一点。

2 个答案:

答案 0 :(得分:4)

您可以通过自己加入表格来完成此操作。 SUM将累计到该行的所有行:

select cur.id, sum(prev.val)
from TheTable cur
left join TheTable prev
    on cur.id >= prev.id
group by cur.id

MySQL还允许使用用户变量来计算这个,这更有效但被认为是黑客攻击:

select 
     id
,    @running_total := @running_total + val AS RunningTotal
from TheTable

答案 1 :(得分:0)

SELECT l.Id, SUM(r.Val) AS Val
FROM your_table AS l
    INNER JOIN your_table AS r
        ON l.Val >= r.Val
GROUP BY l.Id
ORDER By l.Id