0

データベースからすべてのデータをforeach印刷するがあります。データは次のようになります。

data_sum
63
78
25
35

ループ内の各行について、次のように合計を追加します。

data_sum
63
141
166
201

私はこのSQLクエリを使おうとしました:

SET @csum := 63;
SELECT id_account, data_sum, is_expense, (@csum := @csum + data_sum) AS cumulative_sum FROM economy_events
WHERE id_account = '4'
AND is_expense = '1'

しかし、私はSQLSTATE[HY000]: General errorそれを試してみたときだけ得ています。この方法を使おうとするのはこれが初めてです。私は何を間違えましたか?

前もって感謝します。

4

1 に答える 1

2

質問から直接貼り付けると、クエリはMySQL(少なくとも5.1、5.5、および5.6)で機能します。

このSQLfiddleを参照してください:http ://sqlfiddle.com/#!8/53241/1/1

ただし、目的の出力を再現するには、@csumを0に初期化する必要があります。また、累積合計を意味のあるものにするには order by、クエリに句を追加する必要があります。

あるプログラミング言語からクエリを実行している場合、問題は継続行の問題であるか、クエリが2つのステートメントで構成されている可能性があります。

クエリを次のように書き直してみてください

SELECT id_account, data_sum, is_expense,
       (@csum := @csum + data_sum) AS cumulative_sum
FROM economy_events, (SELECT @csum := 0) AS csums
WHERE id_account = '4'
AND is_expense = '1'
于 2013-01-19T11:18:32.137 に答える