MySQL获取单人最高票数排行榜
获取单人最高票数排行榜
起因
项目中做了个投票活动,活动中每个人可以上传多个作品,排行榜和获奖名单是针对用户进行发放,一个用户多个作品上榜,按一个用户算。开始使用的是 group by ,但是使用 group by 后,使用 order by 排序不起作用,便有了以下解决办法!
MySQL表信息

查询每人最高的作品信息并排序
SQL原生写法
ELECT * FROM (SELECT id,uid,max(vote_num) as vote_num FROM `tp_vote_join` WHERE `fid` = 3 GROUP BY `uid`)as temp ORDER BY vote_num DESC,id ASC LIMIT 7
ThinkPHP6 使用 Model 类子查询写法
public static function getRank($fid, $size = 5) { // 子查询 $sql = self::where('fid', $fid)->field('id,uid,max(vote_num) as vote_num')->group('uid')->buildSql(); // 根据投票数倒序 return self::table($sql . 'temp')->with('user_info')->order('vote_num DESC,id ASC')->limit($size)->select()->toArray(); }

浙公网安备 33010602011771号