mysql - 使用一个 sql 查询更新总计

标签 mysql sql profiles

我有一张包含玩家的 table ,还有一张包含个人资料的 table 。个人资料(用户)可以“认领”玩家,以便玩家记录中的“个人资料”字段被设置为个人资料的 ID。

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

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

但是,总得分设置为最后找到的值。我该如何解决这个问题?

最佳答案

您必须使用分组依据。

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

关于mysql - 使用一个 sql 查询更新总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18714323/

相关文章:

c# - ASP.Net 配置文件 : difficulty setting up and using profile fields

php - 为什么在 SELECT 语句中使用 RAND() 时 MySQL 返回相同的结果?

php - 如何在mysql中存储配置变量?

sql - 在 Doctrine DQL 中选择 count() 与左连接 manyToMany 单向关系,其中用户没有关系特定组

sql - 在 SQL Server 中将单列转换为多列

plugins - clojure:使用苹果酒时,profiles.clj 在某些项目中没有得到尊重

c# - 如何在gridview中的每一行创建一个到asp.net中另一个操作的超链接?

mysql - 如何根据用户声誉计算输入的重要性/权重?

sql - Excel、VBA、SQL - 从另一个工作簿中检索数据/错误

maven-2 - 针对不同配置文件的 Maven 构建