4

我有一个单列的表。专栏是这样的:

1
2
3
4
5
...

我想创建一个查询,该查询将显示另一列,该列将添加上一个值。所以:

1 1 ( 0 + 1 )
2 3 ( 1 + 2 )
3 5 ( 2 + 3 )
4 7 ( 3 + 4 )
5 9 ( 4 + 5 )
9 14 (5 + 9)
45 54 ( 9 + 45)

我将如何构建一个查询来实现这一点?

本质上,我只想要difference介于ROW[X]和之间ROW[X-1]

4

2 回答 2

16
SELECT  a.val, (@runtot :=  a.val  + @runtot) AS rt, ( @runtot := a.val ) ne
FROM    Table1 a,(SELECT @runtot:=0) c

这似乎奏效了。我尝试在每个阶段重新初始化变量。试试看。

SQLFiddle 演示

于 2012-10-17T05:11:31.167 回答
-1

尝试

SELECT  a.int, (@runtot :=  a.int  + a.int - 1) AS rt
FROM    test a,(SELECT @runtot:=0) c

IE

1 1 ( 0 + 1 )
2 3 ( 1 + 2 )
3 5 ( 2 + 3 )
4 7 ( 3 + 4 )
5 9 ( 4 + 5 )

这将导致您显示的输出

于 2012-10-17T04:33:58.813 回答