sqlServer ROW_NUMBER() 用法
时间: 2025-07-05 18:01:03 浏览: 6
### SQL Server 中 ROW_NUMBER() 函数使用教程
#### 一. 基本概念
ROW_NUMBER() 是一种窗口函数,在 SQL 查询中用于为每一行分配唯一的连续整数。此编号基于指定的排序顺序,可以应用于整个结果集或分区内的数据[^1]。
#### 二. 基础语法结构
基本语句如下所示:
```sql
SELECT
ROW_NUMBER() OVER ([PARTITION BY column_name(s)] ORDER BY column_name(s)) AS row_num,
*
FROM table_name;
```
- `OVER` 子句定义了如何划分和排序数据。
- 可选的 `PARTITION BY` 关键字可用来创建逻辑分组;对于每个分区内部分别重新计数。
- 必需的 `ORDER BY` 部分为每一分区设定排列依据,从而决定行号的具体分布方式[^2]。
#### 三. 实际应用案例
##### 示例 1: 单纯添加序列号
假设有一个名为 `test_user` 的表格,现在希望为其查询结果附加一个自增序号作为新列 "编号":
```sql
SELECT
ROW_NUMBER() OVER(ORDER BY id) AS 编号,
*
FROM test_user;
```
这段代码会按照 `id` 列升序给所有记录编上独一无二的位置索引。
##### 示例 2: 复杂场景下的运用——实现分页效果
考虑从员工信息表 (`employees`) 提取特定范围的数据条目来完成分页展示的需求:
```sql
WITH EmployeePageCTE AS (
SELECT
e.*,
ROW_NUMBER() OVER (ORDER BY some_column) AS rn
FROM employees e
)
SELECT *
FROM EmployeePageCTE
WHERE rn BETWEEN (@pageNumber - 1) * @pageSize + 1 AND @pageNumber * @pageSize;
```
这里通过公共表达式 CTE 创建了一个中间层,先利用 ROW_NUMBER 给全部成员按某字段排位次,再筛选出符合页面大小限制的那一段区间内的人事资料[^3]。
阅读全文
相关推荐















