例如,我有以下数据。
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的最大分数,返回任何一个是好的我只为每个具有可能数据的玩家返回一行他的最高分(得分)。
答案 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
强>