我有一张玩家表:
id points last_online
1 320 2011-07-10
2 1025 2011-07-05
3 750 2011-04-25
4 5000 2011-07-10
5 525 2011-05-01
为了获得玩家排名(基于积分),我有以下 mySQL 选择:
SELECT Player.*,
( SELECT COUNT(*)
FROM players Player_i
WHERE (Player_i.points, Player_i.id) >= (Player.points, Player.id)
) AS rank
FROM players AS Player
WHERE Player.id = 1
它工作正常。因此,玩家 ID 1 的排名为 5。
但我想只考虑过去 30 天内上次在线的玩家(考虑今天是 2011-07-10)。这样,玩家 ID 1 的排名将是 3,因为玩家 3 和 5 被排除在排名之外。
知道我该怎么做吗?