在我的收益网站上,我的一些用户想知道他们今天的收益是什么“排名”。如果他们今天的收入排名第二,那么他们将排名第二。
我能想到的唯一方法是在 Mysql 中执行此操作Select user FROM stats WHERE date=today ORDER BY earnings
,然后循环遍历结果,直到找到所需的用户。
对于一个有点简单的操作来说,这似乎需要做很多工作。有一个更好的方法吗?
编辑:他们还想知道他们还需要赚多少才能提升等级。
编辑2:上述系统的另一个问题是每个收入为 0 美元的人的排名不同,而理想情况下,我希望他们与同一排名并列。
Edit3:也许如果我可以根据收入的顺序分配自动递增 ID 的某种视图,那么您的 ID 也将是您的排名。我还可以轻松地引用 ID-1 用户上方的人。这可能吗?
Edit4:感谢richardthekiwi,我为任何感兴趣的人提出了真正的查询:
SELECT
count(*)+1 MyRanking,
IFNULL((SELECT earnings from today_stats rankUp WHERE rankUp.earnings > my.earnings ORDER BY rankUp.earnings LIMIT 1)-my.earnings,0) AS rankdiff,
my.earnings
FROM today_stats my
left join today_stats others on others.earnings > my.earnings
WHERE my.user_id=18132