GROUP BY中的ORDER中的Mysql LIMIT

时间:2015-08-05 14:57:47

标签: mysql group-by limit

我有这个游戏日志表:

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

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

input_file='input_'+case+'.in'
os.system('./a.out input_file)'

但我所有的尝试都没有结果。 有谁可以帮助我?

2 个答案:

答案 0 :(得分:1)

您可以使用以下查询:

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

答案 1 :(得分:1)

一种方法是首先创建一个临时表,其中包含游戏ID以及该游戏ID的最高分数。这是我在下面的答案中的内部查询。然后,这可以连接回原始表格,以使用户与该游戏ID和获胜分数相关联。

SELECT t.game_id, t.user AS winner
FROM gamelog t1 INNER JOIN
(
    SELECT g.game_id, MAX(g.score) AS maxscore
    FROM gamelog g
    GROUP BY g.game_id
) t2
ON t1.game_id = t2.game_id AND t1.score = t2.maxscore