当前第2页 返回上一页
1 2 3 | 我们发现结果不是我们预期的。因为我们还没有去重。比87大的有俩个都是99,那么87的rank就是2+1=3,而我们要的排名连续不断的。所以用distinct
关键字去重。
第三步:select id, score, (select count (distinct(score)) from scores as b where b.score > a.score ) + 1 as rank from scores as a order by rank;
|

顺序排名预期结果

1 2 3 | 顺序排名我们就按照score字段倒序查询即可,只不过是用msyql的变量去做rank。mysql中的变量是用‘@’跟上变量名称。@rowNum
php中我们用 $rowNum 。mysql中赋值用 := 来赋值。(select @rowNum :=0) r 是给变量@rowNum一个初始值为0。这个很好理解。就是
按照我们要排名的字段倒序去查询,再用mysql变量给每一条结果加一个排列序号。
|
sql语句
1 | select t.id, t.score,@rowNum := @rowNum +1 as rank from (select @rowNum :=0) r, scores as t order by t.score desc ;
|
结果

更多SQL的相关技术文章,请访问SQL教程栏目进行学习!
以上就是MySQL并列排名和顺序排名查询的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
mysql 5.7 深度解析: 半同步复制技术
mysql索引详细介绍
mysql中 char 和 varchar的区别
mysql的重装问题解决方法
浅谈mysql大表优化方案
认识 mysql物理文件
mysql数据库的库表的操作介绍(代码示例)
mysql update 语句一个“经典”的坑
如何以rpm方式安装mysql odbc驱动
mysql跨行事务模型(图文详解)
更多相关阅读请进入《mysql》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » MySQL并列排名和顺序排名查询