我有以下列的表格
身份证、姓名、分数
有行
1, JohnDoe, 1200
2, JohnDoe, 1600
3, Mickey, 1100
基本上,每次玩完游戏后,都会将分数插入数据库。
最终,当显示最高分时,我只想获取某个玩家的最佳结果。在这种情况下,我想获取 JohnDoe 的 1600 分,然后是 Mickey 的 1100 分,但不再是 JohnDoe 的 1200 分,因为这低于他的最高分。
我怎么能这样做?
您需要按名称分组,然后获得每个名称的最高分。
SELECT name, MAX(score) AS "High Score"
FROM ScoreTable
GROUP BY name;
鉴于您的桌子ScoreTable
:
1, JohnDoe, 1200
2, JohnDoe, 1600
3, Mickey, 1100
上面的查询将返回:
Name | High Score
JohnDoe | 1600
Mickey | 1100
您可能还希望按高分排序以在 Mickey 之前显示 JohnDoe(首先显示最高分):
SELECT name, MAX(score) AS "High Score"
FROM ScoreTable
GROUP BY name
ORDER BY "High Score" DESC;
您可以在SQLFiddle中查看它。
select name,max(score)
from table_name
group by name
SELECT name, MAX(score)
FROM <your_table_name>
GROUP BY name;