SQL Server 行号17 Mar 2025 | 4 分钟阅读 行号是 SQL Server 中最常用的排名函数。ROW_NUMBER() 函数为结果输出中的每个分区内的每一行生成一个顺序号。在每个分区中,第一行的编号从 1 开始。我们必须始终使用 ORDER BY 子句来确保这些数字按正确的顺序分配。此函数返回的值为 BIG INT 数据类型。此函数与 SQL Server 2005 和更高版本的 MS SQL 版本一起提供。 ROW_NUMBER 确定查询执行时临时值。如果您想在表中获取数字,您需要查看 IDENTITY 属性和 SEQUENCE。当 SQL Server 中的 ROW_NUMBER 函数在同一分区中遇到两个相同的值时,它会为它们分配不同的排名号。排名号将由它们显示的顺序决定。 不能保证此函数返回的值每次执行的顺序都相同,除非满足以下条件
语法以下是说明 ROW_NUMBER() 函数的语法 让我们了解 ROW NUMBER() 函数的语法 OVER 了解此子句很重要,该子句指定窗口或窗口函数操作的行集。PARTITION BY 和 ORDER BY 是 OVER 子句的两个可能子句。当行必须以特定顺序出现才能执行函数时,支持 OVER 子句的 ORDER BY 表达式。 PARTITION BY
ORDER BY 此子句允许我们对每个分区内的结果集中的行进行排序。这是一个必需的子句,因为 ROW_NUMBER() 函数是依赖于顺序的。 示例让我们通过一个示例了解 ROW_NUMBER 函数在 SQL Server 表中的工作方式。首先,我们将使用下面的语句创建一个名为“Persons”的表 接下来,我们将使用下面的语句将一些记录添加到此表中 接下来,使用 SELECT 语句验证数据。我们将得到以下输出 ![]() 1. 简单的 ROW_NUMBER() 示例 以下语句显示人员的详细信息,并通过使用 ROW_NUMBER() 为每一行添加一个顺序整数 在这里,我们没有指定 PARTITION BY 子句,以便 ROW_NUMBER() 函数将整个结果集视为一个分区。执行该语句后,我们将得到以下输出 ![]() 2. ROW_NUMBER() 在分区示例上 此示例中使用的 ROW NUMBER() 函数为表中的每个分区内的每个记录提供一个顺序号。当年份发生变化时,它总是会重新初始化行号 在这里,我们使用了 PARTITION BY 子句,该子句根据“年份”列将“Persons”表划分为多个分区。执行后,我们将得到以下输出 ![]() 3. ROW_NUMBER() 用于分页的示例 我们也可以将 ROW_NUMBER() 函数用于分页。例如,如果我们想通过页面在应用程序中获取一个人的所有信息,我们首先将使用 ROW_NUMBER() 函数为每一行分配一个顺序号。其次,按请求的页面对行进行排序。 以下语句更清楚地解释了它 它将提供以下输出 ![]() 如果我们不想使用子查询,我们可以使用通用表表达式 (CTE),如下面的语句所示 在此示例中,我们首先指定 CTE,它使用 ROW_NUMBER() 函数为结果集中的每一行按顺序分配。其次,外部查询返回所需的结果。执行后,我们将得到以下输出 ![]() 结论在本文中,我们学习了如何使用 SQL Server 中的 ROW NUMBER() 函数为查询的分区内的每条记录提供一个顺序号。 下一个主题重命名 SQL Server 中的列 |
我们请求您订阅我们的新闻通讯以获取最新更新。