这是我遇到的一个真正的 MySQL 查询问题。
我正在编写的游戏中有一张高分表。高分数据库记录名称、级别和达到的分数。数据库中有许多近乎重复的内容。例如:
Name | Level | Score | Timestamp (key)
Bob 2 41 | 1234567.890
Bob 3 15 | 1234568.890
Bob 3 20 | 1234569.890
Joe 2 40 | 1234561.890
Bob 3 21 | 1234562.890
Bob 3 21 | 1234563.890
我想返回一个“达到的最高水平”高分列表,输出类似于:
Name | Level | Score
Bob 3 21
Joe 2 40
我目前使用的 SQL 查询是:
SELECT *, MAX(level) as level
FROM highscores
GROUP BY name
ORDER BY level DESC, score DESC
LIMIT 5
然而,这并不完全奏效。“Score”字段输出似乎总是从组中随机抽取,而不是获取所达到的最高级别的相应分数。例如:
Name | Level | Score
Bob 3 41
Joe 2 40
Bob 在第 3 级时从未得到 41 分!我怎样才能解决这个问题?