Mysql分组并获取与该组中的最大字段值对应的行

时间:2014-07-07 04:22:03

标签: mysql

我对如何在mysql中组合group和max感到困惑。这是我的问题:

我需要对数据进行分组,然后根据该组中的最大值,我需要获取该行。这是一个示例:

表格

ID Player Score

1    1     5

2    1     7

3    2     5

4    2     8

5    2     9

在基于玩家分组并获取与每个玩家的最高分相对应的所有字段后

结果

ID Player Score

2    1     7

5    2     9 

请帮我写一下这个问题的查询。

1 个答案:

答案 0 :(得分:1)

这是实现目标的一种方法,但可以有一些更简单的方法:

SELECT s.id, 
       s.player, 
       s.score
  FROM scores s
  JOIN (SELECT id, 
               player, 
               MAX(score) AS total
         FROM scores
     GROUP BY player
       ) r
    ON r.total = s.score AND 
       r.player = s.player;

Live DEMO

基本上,您要比较得分和玩家,以获得示例中列出的正确值。

但是,如果您有同一个玩家的多个条目具有相同的分数,那么您可能会遇到问题,如果您想要第一个或最后一个,它可能与订购有关但除此之外它不起作用。