MySQL ROW_NUMBER() 函数

17 Mar 2025 | 阅读 2 分钟

MySQL 中的 ROW_NUMBER() 函数用于为分区内的每一行返回顺序号。它是一种窗口函数。行号从 1 开始,直到分区中的行数。

需要注意的是,MySQL 在 8.0 版本之前不支持 ROW_NUMBER() 函数,但它们提供了一个会话变量,允许我们模拟此函数。

语法

以下是在 MySQL 中使用 ROW_NUMBER() 的基本语法

让我们通过一个例子来演示一下.

首先,我们将使用以下语句创建一个名为“Person”的表

接下来,需要向此表中添加值。执行以下语句

接下来,执行 SELECT 语句显示记录

我们将获得如下所示的输出:

MySQL ROW_NUMBER() Function

现在,我们可以使用 ROW_NUMBER() 函数为每条记录分配一个序号,使用以下语句

它将提供以下输出

MySQL ROW_NUMBER() Function

再次,我们可以使用 ROW_NUMBER() 函数为分区内的每条记录分配一个序号,使用以下语句

这将给出如下输出,其中根据年份(2015 年和 2016 年)找到了两个分区。

MySQL ROW_NUMBER() Function

使用会话变量的 MySQL ROW_NUMBER()

我们可以通过会话变量来模拟 ROW_NUMBER() 函数以递增顺序添加行号。

执行以下语句,为每行添加行号,从 1 开始

在此语句中,我们首先指定以 @ 前缀指示的会话变量 @row_number,并将其值设置为 0。然后,我们从 Person 表中选择数据,并为变量 @row_number 的每一行加一。

成功执行查询后,我们将获得如下输出

MySQL ROW_NUMBER() Function

再次,我们将使用一个会话变量作为表,并使用以下语句将其与源表进行交叉连接

我们将得到以下输出:

MySQL ROW_NUMBER() Function
下一话题MySQL Cursor