【问题标题】:updating totals with one sql query用一个 sql 查询更新总数
【发布时间】:2013-09-10 08:44:30
【问题描述】:

我有一张有球员的桌子,还有一张有个人资料的桌子。个人资料(用户)可以“认领”玩家,以便玩家记录中的“个人资料”字段设置为个人资料的 id。

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

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

但是,totalscore 被设置为最后找到的值。我将如何解决这个问题?

【问题讨论】:

  • 请提供示例输入数据和所需结果(现在不清楚)

标签: mysql sql profiles


【解决方案1】:

你必须使用 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

【讨论】:

  • 结果:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 4 行的 'GROUP BY profiles.id' 附近使用正确的语法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多