1. 程式人生 > 其它 >MySql 實現資料排名各版本總結

MySql 實現資料排名各版本總結

一、MySql 8.0 以下 實現排名

        


--
方法一 SELECT name, score, @rank := @rank + 1 as pm FROM scores A, (SELECT @rank := 0) B ORDER BY score DESC; -- 方法二 select C.* from ( SELECT A.*, @rank := @rank + 1 as pm FROM ( SELECT name, score FROM scores
ORDER BY score DESC ) A, (SELECT @rank := 0) B ) as C;

執行後的結果:

二、MySql 8.0 實現排名

函式作用
RANK 並列跳躍排名,並列即相同的值,相同的值保留重複名次,遇到下一個不同值時,跳躍到總共的排名。
DENSE_RANK 並列連續排序,並列即相同的值,相同的值保留重複名次,遇到下一個不同值時,依然按照連續數字排名。
ROW_NUMBER 連續排名,即使相同的值,依舊按照連續數字進行排名。

  


--
方法一 select name,score, rank() over
(ORDER BY score desc) as 'pm' from scores; -- 方法二 select name,score, dense_rank() over(ORDER BY score desc) as 'pm' from scores; -- 方法三 select name,score, row_number() over(ORDER BY score desc) as 'pm' from scores;

結果一:

結果二:

結果三: