我有一个游戏和用户的分数表,用户可以为每个游戏有很多分数:
USER GAME SCORE TIMESTAMP
1 1 125 123456
2 1 120 123457
1 2 10293 123458
2 2 10253 123459
1 1 130 123460
显然有更多的用户和游戏,但你明白了,我正在记录他们获得的每个分数并将其与时间戳一起存储,以获得特定时间范围内的分数。
我需要做的是让用户在游戏中获得个人排名,例如:
user 1 - game 1 - rank 1
user 2 - game 1 - rank 2
但做一个查询
SELECT COUNT(DISTINCT user)
FROM scores
WHERE game = 1
AND score > $user_2_score
AND timestamp < $time_limit
ORDER BY score DESC
将用户排在第三位,因为用户 1 的分数比它高两个。我以为COUNT(DISTINCT user)
可以解决问题,但由于某种原因它没有!
(显然我从另一个查询中获得了用户最高分并将其传递给这个查询)
有没有办法在 MySQL 中做到这一点,或者我可以使用更好的查询来获得更好的结果?