0

我有以下列的表格

身份证、姓名、分数

有行

1, JohnDoe, 1200
2, JohnDoe, 1600
3, Mickey, 1100

基本上,每次玩完游戏后,都会将分数插入数据库。

最终,当显示最高分时,我只想获取某个玩家的最佳结果。在这种情况下,我想获取 JohnDoe 的 1600 分,然后是 Mickey 的 1100 分,但不再是 JohnDoe 的 1200 分,因为这低于他的最高分。

我怎么能这样做?

4

4 回答 4

1

您需要按名称分组,然后获得每个名称的最高分。

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中查看它。

于 2013-10-30T04:11:44.367 回答
0
select name,max(score)
from table_name
group by name
于 2013-10-30T04:11:42.433 回答
0
select name, max(score) as score
from tablename
group by name

按功能读取分组

SQL小提琴

于 2013-10-30T04:11:42.460 回答
0

在数据库中使用聚合

SELECT name, MAX(score)
FROM <your_table_name>
GROUP BY name;
于 2013-10-30T04:17:15.423 回答