How To Select The nth Highest Record In MySQL

摘要:在本教程中,您将学习如何使用各种技术选择数据库表中的n最高记录。

使用MAXMIN函数可以轻松选择数据库表中的最高或最低记录。然而,选择第 n最高的记录有点棘手。例如,从产品表中获取第二贵的产品。

选择第n 最高记录,需要执行以下步骤:

  • 首先获取n个最高的记录并按升序对它们进行排序。第 n 最高记录是结果集中的最后一条记录。
  • 然后按降序对结果集进行排序并得到第一个。

以下是获取按升序排列的第 n最高记录的查询:

SELECT 
    *
FROM
    table_name
ORDER BY column_name ASC
LIMIT N;Code language: SQL (Structured Query Language) (sql)

获取第n最高记录的查询如下:

SELECT 
    *
FROM
    (SELECT 
        *
    FROM
        table_name
    ORDER BY column_name ASC
    LIMIT N) AS tbl
ORDER BY column_name DESC
LIMIT 1;Code language: SQL (Structured Query Language) (sql)

幸运的是,MySQL 为我们提供了LIMIT 子句,可以限制返回结果集中的行数。您可以将上面的查询重写为以下查询:

SELECT 
    *
FROM
    table_name
ORDER BY column_name DESC
LIMIT n - 1, 1;Code language: SQL (Structured Query Language) (sql)

该查询返回 n-1 行后的第一行,以便您获得第 n最高记录。

获取第n最高记录示例

例如,如果您想获取products表中第二贵的产品 (n = 2),请使用以下查询:

SELECT 
    productCode, productName, buyPrice
FROM
    products
ORDER BY buyPrice DESC
LIMIT 1 , 1;Code language: SQL (Structured Query Language) (sql)

试试看

结果如下:

MySQL 第 n 个最高示例

获取第 n最高记录的第二种技术是使用MySQL 子查询

SELECT *
FROM table_name AS a 
WHERE n - 1 = (
	SELECT COUNT(primary_key_column) 
	FROM products b 
	WHERE  b.column_name > a. column_name)Code language: SQL (Structured Query Language) (sql)

您可以使用第一种技术获得相同的结果来获取第二昂贵的产品,如以下查询所示:

SELECT 
    productCode, productName, buyPrice
FROM
    products a
WHERE
    1 = (SELECT 
            COUNT(productCode)
        FROM
            products b
        WHERE
            b.buyPrice > a.buyPrice);Code language: SQL (Structured Query Language) (sql)

试试看

在本教程中,我们向您展示了如何使用 MySQL 中的 LIMIT 子句选择数据库表中的第 n记录。

本教程有帮助吗?