2015-10-20 35 views
1

我有一些MySQL的問題。我有一張桌子,每一行看起來像這樣:MySQL之前的值

+-------+-------+-------+ 
|index |sum |change | 
+-------+-------+-------+ 

現在我需要弄清楚如何計算總和。總和爲

sum(current)= sum(previous)+ change(current)。

+-------+----------------------------+----------+ 
|index |sum       |change | 
+-------+----------------------------+----------+ 
|0  |sum(0)      |0   | //Beginning values are set 
+-------+----------------------------+----------+ 
|1  |sum(1) = sum(0) + change(1) |change(1) | //change is the only thing that changes the sum 
+-------+----------------------------+----------+ 
|2  |sum(2) = sum(1) + change(2) |change(2) | 
+-------+----------------------------+----------+ 
        ...... 

我的問題是:

  1. 我不知道如何定義總和(電流)= SUM(前)+變化(電流)。

  2. 如果我刪除或更新例如索引(1),如何保持數據一致?我不知道該怎麼做,因爲每個價值都取決於它的前任。

感謝您的幫助!

回答

0

在MySQL中,您使用變量可以這樣做:

select t.index, (@s := @s + change) as sum, change 
from t cross join 
    (select @s := 0) params 
order by index; 

注意名稱,如indexsum是保留字和/或關鍵字。您應該爲查詢使用不同的名稱。

如果你想保留的結果相一致,當數據的變化,那麼你有三種選擇:

  • 使用觸發器。
  • 在您的應用程序中運行一個update查詢以重新計算值。
  • 只要在提取數據時進行計算。然後結果總是與數據一致。
+0

謝謝,那就是我一直在尋找的! – Stained