如何用MySQL查询每位玩家的最高得分?
获取每位玩家最高得分的简洁SQL方案
嘿,这问题我熟!你原来的SQL语句有个小问题:用GROUP BY name分组后直接选score,数据库只会返回该玩家分组里的任意一条记录的得分(不同数据库处理逻辑有差异,但肯定不是你要的最高分)。
要简洁地拿到每位玩家的最高得分,只需要给score加上聚合函数MAX()就行,直接看修改后的语句:
SELECT name, MAX(score) AS highest_score FROM arcade GROUP BY name ORDER BY highest_score DESC;
简单解释下:
MAX(score):自动计算每个name分组里的最高得分,精准满足你“每位玩家最高得分”的需求AS highest_score:给计算出的最高分列起一个更清晰的别名,方便后续使用- 保留
GROUP BY name按玩家分组,ORDER BY highest_score DESC按最高分从高到低排序,和你原来的排序需求完全匹配
如果之后你需要获取最高分对应的其他信息(比如玩家拿到最高分的时间),可能需要用到窗口函数(比如ROW_NUMBER()),但就目前的需求来说,上面的语句已经足够简洁高效啦!
内容的提问来源于stack exchange,提问作者user1022585
相关产品推荐
相关产品推荐

