mysql排名函数ROW_NUMBER、RANK、DENSE_RANK、NTILE详解

 更新时间:2025年03月11日 09:41:44   作者:一个懵懂的菜鸟  
文章介绍了SQL中的ROW_NUMBER()、RANK()、DENSE_RANK()和NTILE()函数的定义、用法和区别,这些函数在分页查询、排名等场景中非常有用

1.ROW_NUMBER()

定义:ROW_NUMBER()函数作用就是将select查询到的数据进行排序,每一条数据加一个序号,他不能用做于学生成绩的排名,一般多用于分页查询,

比如查询前10个 查询10-100个学生。

实例:

1.1对学生成绩排序

这里number就是每个学生的序号 根据studentScore(分数)进行desc倒序

1.2获取第二个同学的成绩信息

这里用到的思想就是 分页查询的思想 在原sql外再套一层select

where t.number>=1 and t.number<=10 是不是就是获取前十个学生的成绩信息纳。

2.RANK()

定义:RANK()函数,顾名思义排名函数,可以对某一个字段进行排名,这里为什么和ROW_NUMBER()不一样那,ROW_NUMBER()是排序,当存在相同成绩的学生时,ROW_NUMBER()会依次进行排序,他们序号不相同,而Rank()则不一样出现相同的,他们的排名是一样的。

下面看例子:

2.1对学生成绩进行排名

这里发现 ROW_NUMBER()和RANK()怎么一样?

因为学生成绩都不一样所以排名和排序一样,下面改一下就会发现区别。

当出现两个学生成绩相同是里面出现变化。

RANK()是 1 2 2,而ROW_NUMBER()则还是1 2 3,这就是RANK()和ROW_NUMBER()的区别了

3.DENSE_RANK()

定义:DENSE_RANK()函数也是排名函数,和RANK()功能相似,也是对字段进行排名,那它和RANK()到底有什么不同那?看例子:

实例:

DENSE_RANK()密集的排名他和RANK()区别在于,排名的连续性,DENSE_RANK()排名是连续的,RANK()是跳跃的排名,所以一般情况下用的排名函数就是RANK()。

4.NTILE()

定义:NTILE()函数是将有序分区中的行分发到指定数目的组中,各个组有编号,编号从1开始,就像我们说的’分区’一样 ,分为几个区,一个区会有多少个。

实例:

这里查询了3次,第一次分为1个’区’,所以查询结果number全是1,第二次分为2个区,查询结果为 1 1 2,意思就是 第一个 ‘区’ 为 1 1 两个编号的数据 ,第二个’区’只有2这个数据。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 构建双vip的高可用MySQL集群

    构建双vip的高可用MySQL集群

    大家好,本篇文章主要讲的是构建双vip的高可用MySQL集群,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • CentOS7环境下源码安装MySQL5.7的方法

    CentOS7环境下源码安装MySQL5.7的方法

    这篇文章主要介绍了CentOS7环境下源码安装MySQL5.7的方法,结合实例形式分析了CentoS7环境下MySQL5.7的下载、编译、安装、设置等相关操作技巧,需要的朋友可以参考下
    2018-03-03
  • 详解MySQL资源组的使用方法

    详解MySQL资源组的使用方法

    MySQL支持创建和管理资源组,并允许将服务器内运行的线程分配给特定的组,本文主要介绍了详解MySQL资源组的使用方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-07-07
  • mysql的MVCC多版本并发控制的实现

    mysql的MVCC多版本并发控制的实现

    这篇文章主要介绍了mysql的MVCC多版本并发控制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04
  • mysql之delete删除记录后数据库大小不变

    mysql之delete删除记录后数据库大小不变

    这篇文章主要介绍了mysql之delete删除记录后数据库大小不变的相关资料,需要的朋友可以参考下
    2016-06-06
  • mysql 8.0.12安装配置方法图文教程(Windows版)

    mysql 8.0.12安装配置方法图文教程(Windows版)

    这篇文章主要为大家详细介绍了Windows下mysql 8.0.12安装配置方法图文教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • MySQL密码忘了怎么办?MySQL重置root密码方法

    MySQL密码忘了怎么办?MySQL重置root密码方法

    本文主要介绍Windows和Linux系统下忘记密码重置root密码的方法,需要的朋友可以参考下。
    2016-05-05
  • 在sql中对两列数据进行运算作为新的列操作

    在sql中对两列数据进行运算作为新的列操作

    这篇文章主要介绍了在sql中对两列数据进行运算作为新的列操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Ubuntu查看修改mysql的登录名和密码、安装phpmyadmin

    Ubuntu查看修改mysql的登录名和密码、安装phpmyadmin

    这篇文章主要介绍了Ubuntu查看修改mysql的登录名和密码、安装phpmyadmin,本文分步骤给大家讲解的非常详细,需要的朋友可以参考下
    2019-11-11
  • MySQL执行计划详解

    MySQL执行计划详解

    给大家带来了关于mysql的相关知识,主要介绍了从Mysql源码中分析执行计划,从而知道MySQL是如何处理你的SQL语句的,分析你的查询语句或是表结构的性能瓶颈,需要的朋友可以参考下
    2022-09-09

最新评论