为了账号安全,请及时绑定邮箱和手机立即绑定

排名查询结果如何去掉重复数据?

排名查询结果如何去掉重复数据?

喵喵时光机 2019-05-12 13:50:30
有一个用户排行榜表,需要按分数高低进行名次排序并输出,如有重复用户的,取该用户的最高分现在我是这样写的DB::select("SELECTnickname,id,fraction,FIND_IN_SET(fraction,(SELECTGROUP_CONCAT(fractionORDERBYfractionDESC)FROMfan_rankingsWHEREtest_id=$test_id))ASrankFROMfan_rankingsWHEREtest_id=$test_idANDuser_id=$user->idORDERBYfractionDESC");我在ORDERBY前加了个GROUPBY(user_id),但是有报错,请教下有什么办法还有怎么用ORM的写法来呢,感觉用原生的写有点复杂本人使用的laravel5.4版本请大佬不吝赐教
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

FanRanking::query()->groupBy('user_id')->orderByDesc('fraction')->limit(100)->get(['user_id',\DB::raw('max(fraction)asfraction')])
在laravel社区某个大佬的回答,看起来简洁又有用!
                            
查看完整回答
反对 回复 2019-05-12
?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

DB::select("SELECTdistinctnickname,id,fraction,FIND_IN_SET(fraction,(
SELECTGROUP_CONCAT(fraction
ORDERBYfractionDESC)
FROMfan_rankingsWHEREtest_id=$test_id)
)ASrank
FROMfan_rankings
WHEREtest_id=$test_idANDuser_id=$user->idORDERBYfractionDESC");
试试加一个distinct
                            
查看完整回答
反对 回复 2019-05-12
  • 2 回答
  • 0 关注
  • 494 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号