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

有一个用户排行榜表,需要按分数高低进行名次排序并输出,如有重复用户的,取该用户的最高分现在我是这样写的
DB::select("SELECTnickname,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");
我在ORDERBY前加了个GROUPBY(user_id),但是有报错,请教下有什么办法还有怎么用ORM的写法来呢,感觉用原生的写有点复杂本人使用的laravel5.4版本请大佬不吝赐教
喵喵时光机
浏览 495回答 2
2回答

慕姐8265434

FanRanking::query()->groupBy('user_id')->orderByDesc('fraction')->limit(100)->get(['user_id',\DB::raw('max(fraction)asfraction')])在laravel社区某个大佬的回答,看起来简洁又有用!

一只斗牛犬

DB::select("SELECTdistinctnickname,id,fraction,FIND_IN_SET(fraction,(SELECTGROUP_CONCAT(fractionORDERBYfractionDESC)FROMfan_rankingsWHEREtest_id=$test_id))ASrankFROMfan_rankingsWHEREtest_id=$test_idANDuser_id=$user->idORDERBYfractionDESC");试试加一个distinct
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript