次のようなテーブルとクエリにより、目的の結果が得られます。
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 it を使用すると、正しく動作しません。何か良い解決策はありませんか?
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 の値を計算しませんでした。どこが問題なのかわからない!