SQL选择表中具有最大值的行,按另一列排序

Posted

技术标签:

【中文标题】SQL选择表中具有最大值的行,按另一列排序【英文标题】:SQL selecting the rows with the maximum value in a table ordered by a column from another 【发布时间】:2021-10-04 03:13:40 【问题描述】:

我有 2 个表,简化后如下所示:

Name     Server_id     score
-----------------------------
John         1           300
John         2           400
Mary         2           321
John         1           100
Mary         1            50 
Mary         2            10


Server_id     game
-------------------
   1           pong
   2           Mario

每个玩家可以有多个与任何服务器相关联的分数。而对于一个服务器,对应一个游戏。

现在我想执行一个 select 语句,它返回玩家在每场比赛中的最高得分。像这样的:

Name     game     score
-----------------------
John     pong     300
John     Mario    400
Mary     pong     50
Mary     Mario    321

【问题讨论】:

【参考方案1】:

除非我遗漏了什么,否则这只是JOINGROUP BY

select t1.name, t2.game, max(t1.score)
from table1 t1 join
     table2 t2
     on t1.server_id = t2.server_id
 group by t1.name, t2.game;

【讨论】:

以上是关于SQL选择表中具有最大值的行,按另一列排序的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MYSQL 中选择具有 MAX(列值)的行,按另一列进行分区?

如何按一列的最大值获取SQL行,按另一列分组

SQL:根据另一列的值在列上保留一个具有最大值的行

MySQL - 选择列值仅为0的行,按另一列分组?

选择具有最大值的行的 ID

如何编写sql查询以选择一列中具有最大值的行