0

プレイヤーのテーブルとプロフィールのテーブルがあります。プロファイル (ユーザー) はプレーヤーを「要求」できるため、プレーヤー レコードの「プロファイル」フィールドがプロファイルの ID に設定されます。

プロファイル テーブルに totalscore プロパティ (以前のすべてのスコア値の合計を含む) が必要です。過去にコミットされたデータを計算するために、次のクエリを作成しました。

UPDATE profiles,players
SET profiles.`totalscore` = profiles.`totalscore` + players.`score`
WHERE players.`profile`=profiles.`id`

ただし、totalscore は最後に見つかった値に設定されます。どうすればこれを解決できますか?

4

1 に答える 1

0

group by を使用する必要があります。

UPDATE profiles
inner join (
select profileid,SUM(score) as playersscore
from players
group by
profileid) players
ON players.profileid=profiles.id
SET profiles.totalscore = profiles.totalscore + playersscore
于 2013-09-10T08:47:42.777 に答える