我想以前的記錄值來計算與當前值;如何從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
我想以前的記錄值來計算與當前值;如何從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
假設出發表這樣我解決不了這個問題:
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)
SELECT col1, col2, @a := @a + col2 col3
FROM Table1 JOIN (SELECT @a := 0) t;
我覺得這個解決方案可以做你想做的。
set @a = null;
SELECT @a as previousCol2value , col1, col2, @a := col2 ignoreThis
FROM Table1 ;
檢查下面的SQL FIDDLE,如果你想看到它在行動:
謝謝,我喜歡避免加入。 –
您需要使用'JOIN'。 – Kermit
你怎麼知道哪一行是「前一個」?例如,如果'col1'是'd',那麼「previous」行會有'c'的'col1'? –
有沒有'previous'行SQL –