先用窗口函数计算积分,再把积分进行排序,在连接用户表筛选 select t1.id ,t1.name ,t0.grade as grade_sum from ( select user_id,grade,rank()over(order by grade desc) as rk from ( select user_id,sum(if(type='add',grade_num,-1*grade_num)) as grade from grade_info group by user_id ) as a ) as t0 left join user as t1 on t0.user_id = t1.id where rk = 1

京公网安备 11010502036488号