MySQL并列排名和顺序排名查询


当前第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;

Snipaste_2019-07-01_17-03-55.png

顺序排名预期结果

Snipaste_2019-07-01_17-05-07.png

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 ;

结果

Snipaste_2019-07-01_17-05-54.png

更多SQL的相关技术文章,请访问SQL教程栏目进行学习!

以上就是MySQL并列排名和顺序排名查询的详细内容,更多文章请关注木庄网络博客

返回前面的内容

相关阅读 >>

mysql 5.7 深度解析: 半同步复制技术

mysql索引详细介绍

mysql中 char 和 varchar的区别

mysql的重装问题解决方法

浅谈mysql大表优化方案

认识 mysql物理文件

mysql数据库的库表的操作介绍(代码示例)

mysql update 语句一个“经典”的坑

如何以rpm方式安装mysql odbc驱动

mysql跨行事务模型(图文详解)

更多相关阅读请进入《mysql》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...