如下表和查询给出所需结果。
SELECT col1, col2, col3, @a:=@a+(col2+col3) col4
FROM test
JOIN (SELECT @a:=0)t
col1 | col2 | col3 | col4
-------------------------
a | 1 | 1 | 2
b | 2 | 0 | 4
c | 3 | 0 | 7
a | 0 | 2 | 9
但是当我使用 group by 时它不能正常工作。你有什么好的解决办法吗?
SELECT col1, SUM(col2)col2, SUM(col3)col3, @a:=@a+SUM(col2+col3) col4
FROM test
JOIN (SELECT @a:= 0)t
GROUP BY col1
col1 | col2 | col3 | col4
-------------------------
a | 1 | 3 | 4
b | 2 | 0 | 2 << It will be 6
c | 3 | 0 | 3 << It will be 9
第一行已正确获取。但是 row2 和 row3 没有像前面的例子那样计算前一行的 col4 值。我不明白问题出在哪里!
最佳答案
试试这个代码,它对我有用:)
SELECT col1, col2,col3, @a:=@a+(col2+col3) col4
FROM (select col1,sum(col2)col2,sum(col3)col3 from test group by col1) as tes
JOIN (SELECT @a:= 0)t
我为你做了一个 fiddle :
http://sqlfiddle.com/#!2/9b3ac/44
希望对您有所帮助;)
关于使用 group by 的 MySql 变量顺序计算无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18318806/