当前第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 百万级分页优化(mysql千万级快速分页)
mysql的学习笔记
如何查看本机是否安装了mysql
mysql常用sql语句总结包含复杂sql查询
简单介绍mysql中索引的使用方法
mysql表的连接查询有哪些?
mysql的查询优化详解
mysql单表数据不要超过500万行:是经验数值,还是黄金铁律?
mysql cpu占用高的问题解决方法小结
linux上怎么使用cmake安装mysql?
更多相关阅读请进入《mysql》频道 >>
机械工业出版社
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。
转载请注明出处:木庄网络博客 » MySQL并列排名和顺序排名查询