>  기사  >  데이터 베이스  >  mysql非占位排名_MySQL

mysql非占位排名_MySQL

WBOY
WBOY원래의
2016-05-31 08:49:501239검색

找了好久的mysql排名解决办法,排名结果:1,2,2,3,4,5,5

看sql吧,相信可以看的懂。是从stackoverflow中找的。

SELECT name,clazz,user_id,class_id,xn,scoreSum,awardedMarks,totalPoint,	CASE	    WHEN @prev_value = totalPoint THEN @rank_count	    WHEN @prev_value := totalPoint THEN @rank_count := @rank_count + 1	END AS rank FROM 	(SELECT au.`NAME` AS NAME,CONCAT(vc.`levelname`,vc.`gradename`,vc.`classname`) AS clazz, cs.user_id,cs.class_id,			cs.`xn`,SUM(cs.`project_score`) AS scoreSum,IFNULL(ca.`marks`,0) awardedMarks, 			(SUM(cs.`project_score`)+IFNULL(ca.`marks`,0)) AS totalPoint		FROM ct_score cs 			LEFT JOIN ct_project cp ON cs.`project_id`=cp.`project_id` 			LEFT JOIN aq_user au ON cs.`user_id`=au.`USER_ID` 			LEFT JOIN vw_xj_e_class vc ON cs.`class_id`=vc.`classid` 			LEFT JOIN `ct_awardedmarks` ca ON ca.`class_id`=cs.`class_id` AND ca.`user_id`=cs.`user_id`			,(SELECT @prev_value := NULL) f,(SELECT @rank_count := 0)  m		WHERE cp.`participant`='Personal' 		GROUP BY cs.`user_id`) t ORDER BY totalPoint DESC;



성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.