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

Mysql 如何获取每个玩家得分最高的行数据,mysql,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的最大分数,返回任何一个都可以,我只为每个玩家返回一行,可能的数据为max(分数) 编辑: 第一个版本将获得两个MAX值。现在我看到您需要实际行中的数据: SELECT Play

例如,我有以下数据

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的最大分数,返回任何一个都可以,我只为每个玩家返回一行,可能的数据为max(分数)

编辑:

第一个版本将获得两个
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;

编辑:

第一个版本将获得两个
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;

即将回答同样的问题,welp xd如果数据有另一行,如2,0,50,该怎么办?我想要返回2,0,50…这不是返回2,1,50吗?@TinTran是的,你是对的。我更新了我的答案并添加了Demo,因为我正要回答同样的问题,welp XD如果数据有另一行,比如2,0,50,该怎么办?我想要返回2,0,50…这不是返回2,1,50吗?@TinTran是的,你是对的。我更新了答案并添加了演示