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

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

与其感慨路难行,不如马上出发。
假如_丶
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
最佳答案

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

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

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

1年前 评论

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

1年前 评论
小猪蹄子 1年前
假如_丶

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

1年前 评论
假如_丶

@pigzzz 靠谱。。。

1年前 评论

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

1年前 评论
pigzzz 1年前
假如_丶

@kangfq 我靠...

1年前 评论

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

1年前 评论
假如_丶

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

1年前 评论

优不动了,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];
1年前 评论
whs5280 3个月前
小猪蹄子 (作者) 3个月前

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

1年前 评论
小猪蹄子 1年前
sannchi 1年前
Kevin_metnick

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

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

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