使用一个SQL查询更新总计

时间:2013-09-10 08:44:31

标签: mysql sql profiles

我有一个有玩家的桌子和一张有个人资料的桌子。个人资料(用户)可以“声明”玩家,以便玩家记录中的“个人资料”字段设置为个人资料的ID。

我想在个人资料表中输入一个totalscore属性(包含所有以前得分值的总和)。为了计算过去提交的数据,我编写了以下查询:

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

但是,totalscore设置为最后找到的值。我怎么解决这个问题?

1 个答案:

答案 0 :(得分: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