【发布时间】:2019-09-06 10:56:50
【问题描述】:
我正在制作一个每小时计算玩家分数的游戏。需要分数,以便排行榜可以显示排名最高的玩家。游戏中赢得的“积分”存储在boards_played 表中。玩家表有一个 score 字段,每小时更新一次:
update players p
inner join (
SELECT player_id, sum(points) as total
from boards_played
where time_played > DATE_SUB(now(), INTERVAL 7 DAY)
GROUP BY player_id) s on p.player_id = s.player_id
set p.score = s.total
问题是,在 100 场比赛中总共赢得 50 分的人应该比在 200 场比赛中赢得 60 分的人排名更好。
简而言之,分数应仅基于您在过去 7 天内的最后 100 场比赛。
【问题讨论】:
-
过去 100 场比赛或过去 7 天,或两者中的更低?
-
是的,这两个条件都必须满足。因此,如果您在过去 7 天内只玩了 95 场比赛,那么您的分数只能从这 95 场比赛中计算出来。
-
... 如果是 107 那么最近的 100?
-
是的。它必须是最新的。
标签: mysql inner-join limit