我创建了一个MySql表,为玩家分配分数(Player1 => 2000; Player2 => 453; Player1372 => 43231)并保存包含该信息的日期。
每次比赛都会有一个新的Row添加一个新的(更好或更差)分数,所以随着时间的推移,每个玩家有几个不同的分数。我现在想查询表格,按照得分给我一个最好的球员列表,但只考虑每个球员所玩的最近的比赛,所以如果Player1的得分最高,但他的最后一场比赛真的很糟糕,他不会出现。此外,每位玩家只能在列表中出现一次。
输入示例:
Player | Score | Date
Player 1 | 50 | 2013.10.18
Player 3 | 35 | 2013.10.18
Player 2 | 60 | 2013.07.03
Player 1 | 70 | 2013.08.02
Player 1 | 20 | 2013.09.08
Player 2 | 85 | 2012.10.22
输出:(最佳选择)
Player | Score | Date
Player 2 | 60 | 2013.07.03
Player 1 | 50 | 2013.10.18
Player 3 | 35 | 2013.10.18
Btw:实际上它不是玩家,而是所有关于URL的评分,但这就是我描述这个问题的方式。
答案 0 :(得分:3)
我假设你有一个看起来像这样的表
player | game_date |score
-------------------------
1 | 10/12/2013| 700
1 | 10/11/2013| 550
2 | 10/12/2013| 100
2 | 10/11/2013| 777
3 | 10/10/2013| 654
3 | 10/08/2013| 367
然后我会跑这个:
SELECT player, score
FROM tbl
JOIN (SELECT player, MAX(game_date) AS recent
FROM tbl
GROUP BY player) as tmp
ON tmp.player = tbl.player
AND tbl.game_date = tmp.recent
ORDER BY score DESC