SQL ROW_NUMBER / RANK / DENSE_RANK 如何选择?

发布时间 - 2026-01-21 00:00:00    点击率:
应根据处理并列数据的需求选择:ROW_NUMBER严格排序、无并列;RANK并列跳号(如1、1、3);DENSE_RANK并列不跳号(如1、1、2)。

选哪个函数,关键看你要怎么处理并列数据。

ROW_NUMBER:严格排序,不给并列留位置

它不管值是否相同,只按顺序硬生生排 1、2、3、4……每个行都有唯一编号。适合需要“取前 N 条”或“分页时确保唯一顺序”的场景。

  • 相同值会被强行拆开,比如两个 95 分,可能标成第 2 名和第 3 名
  • 常用于分页(如查第 11–20 行)、去重(配合 PARTITION BY 取每组第一条)
  • 语法简单:ROW_NUMBER() OVER (ORDER BY score DESC)

RANK:并列就跳号,强调名次感

值相等就同名次,但会跳过后续编号。比如两个并列第 1,下一个就是第 3 名。适合打分排名、竞赛名次这类“名次即荣誉”的场景。

  • 95、95、90 → 排名是 1、1、3(中间跳了 2)
  • 能清晰看出“有多少人比我强”,但总人数和最大名次可能对不上
  • 语法:RANK() OVER (ORDER BY score DESC)

DENSE_RANK:并列不跳号,连续紧凑

值相等也同名次,但后续编号紧接上一个名次。比如两个并列第 1,下一个就是第 2 名。适合需要连续等级划分(如 A/B/C 档)或统计各档人数的场景。

  • 95、95、90 → 排名是 1、1、2(没跳号)
  • 名次数量最少,便于做分段统计(如“前 3 名”“前 5 档”)
  • 语法:DENSE_RANK() OVER (ORDER BY score DESC)

记住一句话:要唯一序号用 ROW_NUMBER;要体现“并列即同名次且跳空位”用 RANK;要并列同名次但不跳空位,用 DENSE_RANK。


# sql  # 分页  # 跳空  # 都有  # 看你  # 这类  # 不给  # 硬生生  # 句话  # 跳了  # 第一条 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  如何在万网开始建站?分步指南解析  如何基于云服务器快速搭建个人网站?  如何在新浪SAE免费搭建个人博客?  Laravel安装步骤详细教程_Laravel环境搭建指南  Laravel如何使用API Resources格式化JSON响应_Laravel数据资源封装与格式化输出  简单实现Android验证码  Android Socket接口实现即时通讯实例代码  如何实现建站之星域名转发设置?  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  Laravel 419 page expired怎么解决_Laravel CSRF令牌过期处理  Python自动化办公教程_ExcelWordPDF批量处理案例  Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives  利用 Google AI 进行 YouTube 视频 SEO 描述优化  详解阿里云nginx服务器多站点的配置  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  5种Android数据存储方式汇总  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  lovemo网页版地址 lovemo官网手机登录  网站建设保证美观性,需要考虑的几点问题!  laravel服务容器和依赖注入怎么理解_laravel服务容器与依赖注入解析  如何在建站之星绑定自定义域名?  Laravel怎么清理缓存_Laravel optimize clear命令详解  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  如何挑选高效建站主机与优质域名?  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  Python文件操作最佳实践_稳定性说明【指导】  *服务器网站为何频现安全漏洞?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  Laravel如何实现事件和监听器?(Event & Listener实战)  音响网站制作视频教程,隆霸音响官方网站?  php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】  JavaScript如何操作视频_媒体API怎么控制播放  如何快速搭建高效香港服务器网站?  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  微信小程序 闭包写法详细介绍  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  ,南京靠谱的征婚网站?  如何用腾讯建站主机快速创建免费网站?  Laravel怎么实现验证码(Captcha)功能  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  网站页面设计需要考虑到这些问题  高性能网站服务器配置指南:安全稳定与高效建站核心方案  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  html如何与html链接_实现多个HTML页面互相链接【互相】  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  如何用好域名打造高点击率的自主建站?