排行榜的实现,如何查询自己的排名

正常查询 排名 我们可以用limitgroupBy
有个疑问, 比如说我查询 前10名,值展示前10名用户,我在前10名后面,如何获取到我自己的排名
可以用foreach但是感觉不是和优雅,有什么优雅的方式吗.....

与其感慨路难行,不如马上出发。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

可以不用全查,比如你查积分排行榜,获取积分比你多的用户就行,你的排名就是结果总个数,前十名取前10个

4年前 评论
小猪蹄子 4年前
讨论数量: 11
Epona

先一起查询出来,然后将前10名和自己的名次分给两个变量就可以了。

4年前 评论

可以不用全查,比如你查积分排行榜,获取积分比你多的用户就行,你的排名就是结果总个数,前十名取前10个

4年前 评论
小猪蹄子 4年前

@Epona 全查询很难受的...一个页面多个排行版就感觉不是那么回事...

4年前 评论

@pigzzz 如果有一天这个用户排到第一名了呢,,排行榜就只有1位而不是10位了.. :grin:

4年前 评论
pigzzz 4年前

@Zippo 所以还是要减少骚操作啊. :joy:老实全部查询

4年前 评论

@kangfq 我就在想哈,比如一个页面三个排行,然后排到1000名,就感觉不是那么回事... :pensive:

4年前 评论

优不动了,hhhhh

//先取排名
$data=Ranking::selectRaw('id,num,user_id,if(@rowNum,@rowNum := @rowNum +1,@rowNum := 1) as rank_num') ->orderBy('num','desc')->get();
//集合生成数组
$result=$data->pluck('rank_num','user_id')->toArray();
//取用户名次
$user_rank=$result[$user_id];
4年前 评论
打酱油的和尚 3年前
小猪蹄子 (作者) 3年前

明显MySQL不适合做这种事情。redis的有序集合了解一下。

4年前 评论
小猪蹄子 4年前
ononl 4年前
Kevin_metnick

这个sql 应该是可以实现你的需求 里面只要根据你的需求修改条件就可以了

select * from table limit 0,10 
UNION 
(select * from table where id=当前用户id );
4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!