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

Tin*_*ran 0 mysql

例如,我有以下数据.

PlayerId, data, score
1, 0, 20
1, 1, 10
2, 0, 30
2, 1, 40
2, 0, 40
Run Code Online (Sandbox Code Playgroud)

我如何得到以下结果?

PlayerId, data, score
1, 0 20
2, 1, 40
Run Code Online (Sandbox Code Playgroud)

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

Luk*_*zda 5

SELECT PlayerId,MAX(`data`) AS `data`, MAX(score) AS score
FROM your_table
GROUP BY PlayerId
Run Code Online (Sandbox Code Playgroud)

编辑:

第一个版本将获得这两个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;
Run Code Online (Sandbox Code Playgroud)

SqlFiddleDemo

  • 即将回答同样的事情,欢迎xD (2认同)