mysql获取排名问题

根据条件获取当前排名

uid 用户id
score 分数
game_time 游戏时间
create_time 创建时间

根据分数、游戏时间、记录的插入时间 获取当前用户的排名

排名方式:分数大到小 游戏时间小到大,记录时间小到大

图片描述

阅读 3.1k
3 个回答

没看清楚题目不好意思。
我想的笨办法是用二条sql。
假设分数为10000,游戏时间10s,创建时间,2018-11-1
先用第一条sql算出大于10000的有多少条.得 count1
SELECT count(id) FROM table WHERE score > '10000';
再用一条sql算出score=10001,game_time<10s 的一共几条.得 count2.
SELECT count(id) FROM table WHERE score > '10000' AND game_time < '10s';

排名结果为 count1+count2;如果要用一条语句 ,可以用子查询吧,目前没有思路。

数据量不大就直接按你的思路写sql就好了。

select ,(select count() from table as a where a.score>b.score)+1 as rank from table as b where b.uid=581

查询分数大于那个用户的个数来查询排名,rank是排名

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题