select aa.id,aa.name,bb.sum_grade from user aa join ( #找到了id跟总分 select a.user_id,a.add0-b.reduce0 sum_grade from ( #先分为add跟reduce select user_id,sum(grade_num) add0 from grade_info where type='add' group by user_id ) a left join ( #生成reduce select a.id,ifnull(sum(b.reduce0),0) reduce0 from user a left join (select user_id,sum(grade_num) reduce0 from grade_info where type='reduce' group by user_id )b on a.id=b.user_id group by a.id ) b on a.user_id=b.id group by a.user_id ) bb on aa.id=bb.user_id where bb.sum_grade=( select max(t2.sum_grade) from ( #找到了id跟总分 select a.user_id,a.add0-b.reduce0 sum_grade from ( #先分为add跟reduce select user_id,sum(grade_num) add0 from grade_info where type='add' group by user_id ) a left join ( #生成reduce select a.id,ifnull(sum(b.reduce0),0) reduce0 from user a left join (select user_id,sum(grade_num) reduce0 from grade_info where type='reduce' group by user_id )b on a.id=b.user_id group by a.id ) b on a.user_id=b.id group by a.user_id )t2 ) ;