WITH cte AS (SELECT SUM(IF(type='add',grade_num,-grade_num))AS grade_sum FROM grade_info GROUP BY user_id) SELECT G.user_id,U.name,SUM(IF(type='add',G.grade_num,-G.grade_num)) AS 'grade_sum' FROM grade_info G LEFT JOIN user U ON G.user_id = U.id GROUP BY G.user_id HAVING grade_sum IN (SELECT MAX(...