有一個(gè)用戶排行榜表,需要按分?jǐn)?shù)高低進(jìn)行名次排序并輸出,如有重復(fù)用戶的,取該用戶的最高分現(xiàn)在我是這樣寫的DB::select("SELECT nickname, id, fraction, FIND_IN_SET( fraction, (
SELECT GROUP_CONCAT( fraction ORDER BY fraction DESC )
FROM fan_rankings WHERE test_id=$test_id)
) AS rank
FROM fan_rankings
WHERE test_id = $test_id AND user_id = $user->id ORDER BY fraction DESC");我在ORDER BY 前加了個(gè)GROUP BY(user_id),但是有報(bào)錯(cuò),請(qǐng)教下有什么辦法還有怎么用ORM的寫法來呢,感覺用原生的寫有點(diǎn)復(fù)雜本人使用的laravel5.4版本請(qǐng)大佬不吝賜教
1 回答

DIEA
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超2個(gè)贊
FanRanking::query()->groupBy('user_id')->orderByDesc('fraction')->limit(100)->get(['user_id', \DB::raw('max(fraction) as fraction')])
在laravel社區(qū)某個(gè)大佬的回答,看起來簡潔又有用!
添加回答
舉報(bào)
0/150
提交
取消