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

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

与其感慨路难行,不如马上出发。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

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

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

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

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

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

4年前 评论

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

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

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

4年前 评论

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

4年前 评论

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

4年前 评论
pigzzz 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年前
Kevin_metnick

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

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

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