mysql 写法转laravel方式展现,求每个人相同试卷成绩最好的那条记录,如果最高成绩有相同的,获取最近的那条记录
当前laravel的版本:8.80
功能要求,获取每个人相同试卷考试成绩最好的那条记录,如果最高成绩有相同的,获取最近的那条记录,已经知道怎么用mysql查询,目前用以下代码查询
考试成绩表,user_exam
| id | papge_id | user_id | score | created_at |
| -主键- | -试卷id- | -用户id-| -成绩-| -考试日期-|
$ss="SELECT * FROM ( SELECT rank() OVER(PARTITION BY paper_id, user_id ORDER BY score DESC, created_at DESC) AS r, user_exam.* FROM user_exam where paper_id=".$id." ) t WHERE t.r = 1";
$data=UserExam::query()->select('user_exam.id','user_exam.user_id','user_exam.score','user_exam.status', 'user_exam.created_at')
->join(DB::raw("($ss) as exam"), 'exam.id','=','user_exam.id')
->paginate()
;
想请问下优化方法或有没有其他方法获取结果,谢谢