2013-08-16 49 views
0

我想以前的記錄值來計算與當前值;如何從MySQL查詢獲取此前的紀錄值

例如:COL3的電流值將是=(前次值COL3 +電流COL2值)

注:不是重要的是保持COL1順序。因爲結果記錄由Select查詢獲取。

col1 | col2 | col3 
------------------ 
a | 1 | 1 
b | 2 | 3 <= 1+2 
a | 1 | 4 <= 3+1 
d | 3 | 7 <= 4+3 

我覺得也不是那麼難,但用mysql

+0

您需要使用'JOIN'。 – Kermit

+1

你怎麼知道哪一行是「前一個」?例如,如果'col1'是'd',那麼「previous」行會有'c'的'col1'? –

+0

有沒有'previous'行SQL –

回答

3

假設出發表這樣我解決不了這個問題:

mysql> SELECT * FROM test; 
+------+------+ 
| col1 | col2 | 
+------+------+ 
| a | 1 | 
| b | 2 | 
| c | 1 | 
| d | 3 | 
+------+------+ 

...你可以得到的結果你想要這樣做:

mysql> SELECT col1, col2, @a := @a + col2 AS col3 
    -> FROM test JOIN (SELECT @a := 0) t 
    -> ORDER BY col1; 
+------+------+------+ 
| col1 | col2 | col3 | 
+------+------+------+ 
| a | 1 | 1 | 
| b | 2 | 3 | 
| c | 1 | 4 | 
| d | 3 | 7 | 
+------+------+------+ 
4 rows in set (0.00 sec) 

如果您顛倒了訂單,您會根據您的問題得到結果聲明,即col2加上順序以前col3顯示

mysql> SELECT col1, col2, @a := @a + col2 AS col3 
    -> FROM test JOIN (SELECT @a := 0) t 
    -> ORDER BY col1 DESC; 
+------+------+------+ 
| col1 | col2 | col3 | 
+------+------+------+ 
| d | 3 | 3 | 
| c | 1 | 4 | 
| b | 2 | 6 | 
| a | 1 | 7 | 
+------+------+------+ 
4 rows in set (0.00 sec) 
+0

它應該是'@a:= @a + COL2 col3'我想。 – Vatev

+0

哎呀,我的素描正在顯示。固定! –

+0

@傑瑞米:非常好。謝謝 –

1
SELECT col1, col2, @a := @a + col2 col3 
    FROM Table1 JOIN (SELECT @a := 0) t; 

FIDDLE

1

我覺得這個解決方案可以做你想做的。

set @a = null; 
SELECT @a as previousCol2value , col1, col2, @a := col2 ignoreThis 
    FROM Table1 ; 

檢查下面的SQL FIDDLE,如果你想看到它在行動:

http://www.sqlfiddle.com/#!2/774ff/42/1

+0

謝謝,我喜歡避免加入。 –