最近在找工作,本人还是希望回游戏行业的,投了半天抓到一个面试机会,面试题是一个游戏排行榜功能,其中只需要客户端id,分数这两个字段。
我看到这个题的时候心想简单的一批,就没细想可能会出现的一些问题, 查了一下django的文档就开始一把梭,建立一张表,客户端id,分数两个字段。
查询排行榜指定的位次段:
select id,score from user_score order by score desc limit %v1%,%v2%;
当然,当时是用django的orm写的
models.score.objects.all().order_by('-score')[rank_begin:rank_end]
问题来了:
问:如何获取到客户端本身的位次?
当时没用脑子的我想的是取出所有数据,排序后去遍历获得客户端的index
问:当数据量非常大的时候,怎么办?
答:建索引
然后问了一些mysql相关的知识
果不其然被拒了!!
现在想想,在查询客户端本身的位次时,我是有客户端的分数的,即我可以通过这个分数,来查出来比当前分数大的有多少客户端,再+1,就是客户端的排名了。
select count(*) from user_score where score >= %score%;
来源:CSDN
作者:yu的宇
链接:https://blog.csdn.net/qq_40806784/article/details/104431760