介绍
添加序号是一个日常开发和使用SQL的常见需求,即为数据的每一条记录添加一个唯一的数字序号,以便于在查询、排序和统计时更方便地使用。本文将介绍一种更简便的方式来为MSSQL添加序号。
背景
在许多场景下,我们需要为数据添加序号,例如分页查询,为列表添加一列序号、树结构展示时需要展示每个节点的深度等。在MSSQL中,我们可以使用ROW_NUMBER()函数来实现这个需求。
ROW_NUMBER函数的使用
ROW_NUMBER()是一个窗口函数,用于为查询结果中的每行返回一个数字序号,该数字序号基于特定的ORDER BY子句定义的列顺序。具体使用方法如下:
SELECT ROW_NUMBER() OVER (ORDER BY columnName) AS rowNum, *
FROM tableName
说明
* ROW_NUMBER()为函数名,OVER 为窗口函数的关键字,括号内的ORDER BY子句用于规定ROW_NUMBER()函数中的数字序号的顺序。
* rowNum为我们想要为每行数据添加的列名,可以自定义。
* * 表示查询tableName表中的所有列。
示例
我们可以以employees表为例,在每条数据前加上唯一的序号。下面是表结构和数据:
CREATE TABLE employees
(
employeeID int PRIMARY KEY,
lastName varchar(255),
firstName varchar(255),
birthDate date,
hireDate date,
);
INSERT INTO employees VALUES (1, 'Doe', 'John', '1980-01-01', '2001-01-01');
INSERT INTO employees VALUES (2, 'Smith', 'Jane', '1985-01-01', '2005-01-01');
INSERT INTO employees VALUES (3, 'Johnson', 'Tom', '1990-01-01', '2010-01-01');
使用以下代码可以实现为每条记录添加一个序号:
SELECT ROW_NUMBER() OVER (ORDER BY employeeID) AS rowNum, *
FROM employees
输出结果如下:
| rowNum | employeeID | lastName | firstName | birthDate | hireDate |
|--------|-----------|----------|-----------|------------|------------|
| 1 | 1 | Doe | John | 1980-01-01 | 2001-01-01 |
| 2 | 2 | Smith | Jane | 1985-01-01 | 2005-01-01 |
| 3 | 3 | Johnson | Tom | 1990-01-01 | 2010-01-01 |
结论
通过使用ROW_NUMBER()函数,我们可以以更简便的方式为MSSQL添加序号。这种方法在查询、排序、分页等方面都非常的方便。