1

次のようなテーブルとクエリにより、目的の結果が得られます。

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 の値を計算しませんでした。どこが問題なのかわからない!

4

1 に答える 1

1

このコードを試してみてください。うまくいきました:)

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

私はあなたのためにフィドルを作りました:

http://sqlfiddle.com/#!2/9b3ac/44

それが役に立てば幸い ;)

于 2013-08-19T17:25:51.363 に答える