MySQL:每人只获取一行具有最高价值的行

时间:2015-11-11 17:48:28

标签: php 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添加到上述查询的结尾,但结果却很奇怪......

我希望SO中的MySQL大师会怜悯我并帮助......

1 个答案:

答案 0 :(得分:2)

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