2015-11-11 42 views
1

我有一張表,每個玩家存儲前三名高分。示例數據是:MySQL:每個人只取得一個具有最高價值的行

id  player_id  score  score_date 
------------------------------------------------------ 
1  100   1100   2015-10-10 
2  101   1750   2015-10-07 
3  100   3200   2015-10-10 
4  102   4100   2015-10-10 
5  101   3000   2015-10-01 

我如何編寫一個查詢,將獲取我每個球員的最高得分紀錄特定日期?說我的日期是2015-10-10,結果我要的是:

player_id  score  date 
------------------------------------------------------ 
100   3200   2015-10-10 
102   4100   2015-10-10 

如果你注意到,在player 100對上述日期兩個分數。我想:

select * from player 
where date(score_date) = date('2015-10-10') 
group by player_id 

但它給了我1100作爲得分player 100,但正確的值是3200。我也嘗試添加ORDER by score DESC limit 1結束上述查詢,但隨後的結果只是奇怪...

我希望在這樣的MySQL大師們將在我的憐憫和幫助......

回答

2
select player_id, MAX(score), score_date from player 
where date(score_date) = date('2015-10-10') 
group by player_id 
+0

這是除了選擇id字段外,因爲它不會返回正確的。但看到OP不需要它,他會沒事的。 – Andrius

+0

謝謝你,那工作:)不幸的是,我錯誤地框了我的問題,需要做更多的東西...所以讓我張貼作爲一個不同的問題。 –

+0

只是爲了利益的緣故,你能在這裏發佈一個鏈接到新的問題嗎? –

相關問題