如何在 MySQL 中选择第 N 高记录

2025年3月17日 | 阅读 3 分钟

在本节中,我们将学习如何通过各种技术选择数据库表中的第 N 高记录。

我们可以通过使用 MAX()MIN() 函数 非常轻松地获取数据库表中的最大(最高)或最小(最低)记录。但是,假设我们想从表中获取第 N 高记录(例如,从 employee 表中获取第二昂贵的薪水)。在这种情况下,没有可用的函数可以快速找到它,这使得它变得复杂。

通过执行以下步骤,我们可以选择 MySQL 数据库表中的第 N 高记录

1. 第一步是按升序对所需列进行排序以获取 N 条最高记录,这是结果输出中的最后一条记录。请参阅下面的查询

2. 之后,我们需要按降序对结果输出进行排序并获取第一条记录。

上面的查询也可以通过使用 LIMIT 子句重写,该子句将结果输出中的行数限制为如下

此查询将在 N-1 行之后返回第一行,该行应该是第 N 高记录。

示例

让我们通过一个示例来理解如何从表中获取第 N 高记录。首先,我们将使用以下查询创建一个 Employee

接下来,使用以下查询插入记录

执行 SELECT 语句以验证记录

How to select nth Highest Record in MySQL

假设我们想获取 Employee 表中员工的第二高薪水(n = 2),我们可以使用以下语句

我们将看到以下输出

How to select nth Highest Record in MySQL

假设我们想获取员工的第三高薪水(n = 3)在 Employee 表中;我们可以使用以下语句

我们将看到以下输出

How to select nth Highest Record in MySQL

使用子查询获取第 N 高记录

我们还可以借助子查询获取第 N 高记录,子查询依赖于主查询,并为返回的每条主查询记录进行处理。由于其性能/执行速度慢,此技术很少使用。

请参阅以下使用子查询返回第 N 高记录的查询

请参阅以下使用子查询从 employee 表返回第二高薪水的查询

我们将获得与先前查询相同的输出

How to select nth Highest Record in MySQL