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 实现数据排名各版本总结

 

 

 

二、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;

 

结果一:

   MySql 实现数据排名各版本总结

 

  

结果二:

   MySql 实现数据排名各版本总结

 

 

结果三:  

   MySql 实现数据排名各版本总结

 

上一篇:js实现el-tree树形数据转为扁平数据


下一篇:各种学位&不同学段的表达