mysql排名自定義實現rank


1.mysql排名自定義實現rank

SELECT 
tmp.id,tmp.custoemr_name,tmp.score,
-- 順序一直在變大
@j:=@j+1 AS j,
-- 順序排序,有並列情況
@n:=(CASE WHEN @pre_score=tmp.score THEN @n ELSE @n + 1 END) AS n,
-- 只有在前后二次排序值不同時才會使用順序號
@k:=(CASE WHEN @pre_score=tmp.score THEN @k ELSE @j END) AS rank,
@pre_score:=tmp.score AS pre_score
FROM 
(
-- 成績排序
SELECT * FROM ldf_customer ORDER BY score DESC
) tmp,
-- @k 表示最終的排名(相同值時序號相同) 
-- @j 表示順序排名 
-- @pre_score上一次排序值
(SELECT @k :=0,@j:=0,@n:=0,@pre_score:=0) sdcore

  原著:http://www.cnblogs.com/bjwylpx/p/5345162.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM