2009-10-17 131 views
1

我應該在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 

現在我得到這樣的結果與包含光標,而存儲過程循環。我想找到一個更好的方法來做到這一點。

回答

3

你可以通過加入表格本身來做到這一點。總和加起來都行到這行:

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 
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