我想获得先前的记录值来计算当前值;
示例:col3的当前值为=(前一个col3值+当前col2值)
注意:维护col1顺序并不重要。因为结果记录是由Select query提取的。
col1 | col2 | col3
------------------
a | 1 | 1
b | 2 | 3 <= 1+2
a | 1 | 4 <= 3+1
d | 3 | 7 <= 4+3
我认为这不是很难,但我无法使用mysql解决问题
答案 0 :(得分: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)
答案 1 :(得分:1)
SELECT col1, col2, @a := @a + col2 col3
FROM Table1 JOIN (SELECT @a := 0) t;
答案 2 :(得分:1)
我认为这个解决方案可能会做你想要的。
set @a = null;
SELECT @a as previousCol2value , col1, col2, @a := col2 ignoreThis
FROM Table1 ;
如果你想看到它的实际效果,请检查下面的SQL FIDDLE: