私は次のような構造を持つテーブル(結果)で働いている(私はそれを構築していない、聞かないでください)のMySQL同じテーブル内のSUMとUPDATE
id | record_type | user_id | answer_id | choice | score | total | email
-------------------------------------------------------------------------------
1 email xxxxxxx 0 [email protected]
2 answer xxxxxxx aaaaaa A 0
3 answer xxxxxxx bbbbbb A 0
4 answer xxxxxxx cccccc B 10
5 email yyyyyyy 0 [email protected]
6 answer yyyyyyy aaaaaa A 0
7 answer yyyyyyy bbbbbb A 0
8 answer yyyyyyy cccccc A 0
9 email zzzzzzz 0 [email protected]
10 answer zzzzzzz aaaaaa A 0
11 answer zzzzzzz bbbbbb A 0
12 answer zzzzzzz cccccc B 10
それは調査だと、調査の提出後に変更された正解のスコア値。私は既に "正しい"回答のスコア値を10に設定するための更新を実行しました。そして今、私たちは勝者に連絡できるように、record_type:emailで行の合計を更新する必要があります。
目標は、10,0と10
私はこの
UPDATE results SET total = SUM(score)
FROM results GROUP BY user_id WHERE user_id = user_id
のようなものと思っていますしかし、それは」doesnのように行1,5および9の合計列を設定することです私は間違った道を歩いているかもしれないと心配しています。
これは動作します。非常に素晴らしい。ありがとうございました。 – byron
あなたのための質問...私は〜400Kの行を持つテーブル上でこれを実行していると(おそらくメモリが不足している)クラッシュしています。解決するための提案はありますか?同様に、クエリをチャンクで実行する方法は? – byron
これは "複雑"に見えるかもしれませんが、実装するのは実際に簡単で、夢のように機能します(ユニークなインデックスが必要です。私の要件に合わせて作成しなければなりませんでした) – zzapper