Mysql LIMIT 在 GROUP BY 中的 ORDER

标签 mysql group-by limit

我有这个游戏日志表:

+---------+------+-------+
| game_id | user | score |
+---------+------+-------+
| 1       | Nick | 10    |
| 1       | Bob  | 15    |
| 2       | Nick | 15    |
| 2       | Bob  | 10    |
| 3       | Nick | 20    |
+---------+------+-------+

在每场比赛中,获胜者只有一位得分最高的用户。 我正在尝试选择每场比赛的获胜者,例如:

+---------+--------+
| game_id | winner |
+---------+--------+
| 1       | Bob    |
| 2       | Nick   |
| 3       | Nick   |
+---------+--------+

但是我所有的努力都没有结果。 谁能帮帮我?

最佳答案

您可以使用以下查询:

SELECT g1.game_id, g1.user AS winner
FROM games AS g1
INNER JOIN (
   SELECT game_id, MAX(score) AS maxScore
   FROM games
   GROUP BY game_id 
) AS g2 ON g1.game_id = g2.game_id AND g1.score = g2.maxScore

Demo here

关于Mysql LIMIT 在 GROUP BY 中的 ORDER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31836040/

相关文章:

javascript - 将函数限制为 1 次执行 YouTube 播放器 api

mysql - 我怎样才能只选择时间

java - 插入不能正常工作

php - MySQL 查询语句转换为 Codeigniter Active record 样式查询语句,带有 SUM()

sql - 简单的 sql(我希望!)

android - 是否有同时执行的 AsyncTasks 的限制?

php - MySQL问题: The right way to calculate some data from different tables

mysql - 将月份分组为季节

mysql - 使用联接、分组依据和全文的 where 子句中的未知列 xxx

c++ - 最大内存分配?