如何获取每个玩家得分最高的行数据

时间:2015-10-27 21:02:00

标签: mysql

例如,我有以下数据。

PlayerId, data, score
1, 0, 20
1, 1, 10
2, 0, 30
2, 1, 40
2, 0, 40

我如何得到以下结果?

PlayerId, data, score
1, 0 20
2, 1, 40

对于结果的第2行,如果它返回数据0而不是1则无关紧要,因为40是0和1的最大分数,返回任何一个是好的我只为每个具有可能数据的玩家返回一行他的最高分(得分)。

1 个答案:

答案 0 :(得分:5)

SELECT PlayerId,MAX(`data`) AS `data`, MAX(score) AS score
FROM your_table
GROUP BY PlayerId

修改

第一个版本将获得两个MAX值。现在我看到你想要来自实际行的数据:

SELECT PlayerId, score, MAX(`data`) AS `data`
FROM your_table
WHERE (PlayerId, score) IN (SELECT PlayerId, MAX(score)
                          FROM your_table
                          GROUP BY PlayerId)
GROUP BY PlayerId, score;

SqlFiddleDemo