2015-10-27 144 views
0

例如,我有以下數據。如何獲得每個玩家得分最高的行數據

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的最高分,返回一方還好我只是一行返回每個玩家有沒關係他最大(分數)的可能數據。

回答

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

+2

正要回答同樣的事情,韋爾普的xD – ivan

+0

什麼,如果這些數據是另一行像2,0,50?我想要2,0,50返回...這不會返回2,1,50? –

+0

@TinTran是的,你是對的。我更新了我的答案並添加了演示 – lad2025

相關問題