ROW_NUMBER 是 SQL 2005 中新增的函数, 多用于分页, 基本的语法为

ROW_NUMBER() OVER([<partition_by_clause>] <order_by_clause>)

其中, 分区语句是可选的, 排序语句是必须的, 比如这样的语句:

SELECTROW_NUMBER() OVER(ORDER BY ProductID),CategoryID,ProductName,UnitPrice
FROMProducts

输出结果为:

也可以按照 CategoryID 对行号进行分区, 也就是将行号按照 CategoryID 进行分组, 例如:

SELECTROW_NUMBER() OVER(PARTITION BY CategoryID ORDER BY ProductID),CategoryID,ProductName,UnitPrice
FROMProducts

返回结果为:

ROW_NUMBER 通常用于分页, 但是也有一些巧妙地用法, 例如, 要查询每个分类中最便宜的三种产品, 可以使用下面的查询语句:

SELECT * FROM
(SELECTROW_NUMBER() OVER(PARTITION BY CategoryID ORDER BY UnitPrice) AS 'RowNum',CategoryID,ProductName,UnitPriceFROMProducts
) AS p
WHERERowNum <= 3

返回结果为:

ROW_NUMBER 函数相关推荐

  1. Sql Server 2005 ROW_NUMBER 函数实现分页

    过去用SQL Server 2000分页的,大多都用到了临时表.SQL Server 2005 ROW_NUMBER 函数支持分页,性能据说也非常不错. Paging Records Using SQ ...

  2. [转]SQL2005后的ROW_NUMBER()函数的应用

    SQL Server 2005后之后,引入了row_number()函数,row_number()函数的分组排序功能使这种操作变得非常简单 分组取TOP数据是T-SQL中的常用查询, 如学生信息管理系 ...

  3. Oracle的row_number函数

    row_number函数 语法格式 row_number() over (partition by a order by b) 语法说明 将表按照a字段进行分组,然后,按照b字段进行组内排序 并给出排 ...

  4. oracle分组_MySQL分组取TOP,实现Oracle的ROW_NUMBER函数的功能

    Excel中分组排序只需要对数据进行升序降序,再利用if函数添加排序序号,即可筛选出分组top数据. Oracle也有row_number()函数对数据进行分组排序,而MySQL并没有此类函数,那么如 ...

  5. [MSSQL]ROW_NUMBER函数

    ROW_NUMBER()在SQL2K5版本中新增,该函数返回结果集分区内行的序列号,每个分区的第一行从 1 开始,连续不间断,后跟OVER BY子句或者PARTITION BY子句 先构造一张表,放一 ...

  6. 浅析row_number()函数【HQL】

    语法格式:row_number() over(partition by 分组列 order by 排序列 desc) row_number() over()分组排序功能: 在使用 row_number ...

  7. T-SQL利用Row_Number函数实现分页

    SQL: CREATE PROCEDURE PagingViewTest (@currentPageIndex INT, --页序号@pageSize INT, --页大小@pageCount INT ...

  8. hive的row_number()函数

    hive的row_number()函数 功能 用于分组,比方说依照uuid分组 组内可以依照某个属性排序,比方说依照uuid分组,组内按照imei排序 语法为row_number() over (pa ...

  9. SQL中 ROW_NUMBER 函数的用法

    SQL中 ROW_NUMBER 函数的用法 ROW_NUMBER()函数将针对SELECT语句返回的每一行,从1开始编号,赋予其连续的编号.在查询时应用了一个排序标准后,只有通过编号才能够保证其顺序是 ...

  10. SQL Server数据库partition by 与ROW_NUMBER()函数使用详解[转]

    关于SQL的partition by 字段的一些用法心得 先看例子: if object_id('TESTDB') is not null drop table TESTDB create table ...

最新文章

  1. kubernetes ConfigMap
  2. java map取第一个元素_Java Set接口 Map 与枚举
  3. Spring Boot笔记-对dto数据传输对象及物联网公司主创建主键的认识
  4. MapReduce之join操作
  5. Android7.1 Offload模式下的音频数据播放流程
  6. redis 常用配置文件配置
  7. mysql 分区表 归档_详解 MySQL 数据库冷数据归档
  8. linux命令kp使用方法,Linux 命令 使用
  9. 程序员写代码时你戴耳机是为了撩妹儿吗?感觉有点酷!
  10. ruoyi第三方登入Gitee
  11. 软件测试人员的年终绩效考核怎么应对
  12. linux(centos) 保存退出vi编辑
  13. java 读写文件乱码_Java 解决读写本地文件中文乱码的问题
  14. 《计算机科学概论(第12版)》—第1章1.10节通信差错
  15. 用牛顿迭代法求方程的根matlab,牛顿迭代法求方程根的MATLAB程序
  16. 缉拿隐藏进程以及隐藏CPU利用率的进程
  17. MATLAB学习第五章矩阵
  18. 数据驱动决策:BI在零售业的数据化管理
  19. Android学习-通知的使用详解
  20. 以患者到医院就诊为背景,使用列表对象(ArrayList)和泛型机制实现就诊排队叫号系统

热门文章

  1. asp自定义函数可以返回数组或者对象
  2. Apache Hadoop 2.7如何支持读写OSS
  3. 极验行为验证的使用方法
  4. Ionic 存储目录 CORS
  5. 【转】matlab函数_连通区域
  6. 2014025687《嵌入式系统程序设计》第七周学习总结
  7. 转载: Qt 学习之路 2归档
  8. Java调优之jvm和线程的内存分析
  9. 100c之50:到底谁在说谎
  10. mysql函数快速查找