如何在MySQL中查找第n个最大值的记录
时间:2019-11-20 08:52:33 来源:igfitidea点击:
简介:在本教程中,您将学习如何使用各种技术来选择数据库表中的第n条最高记录。
使用MAX或MIN函数很容易选择数据库表中的最高或最低记录。
但是,选择第n个最高记录有点棘手。
例如,从产品表中获得第二昂贵的产品。
要选择第n条最高记录,您需要执行以下步骤:
首先,您获得n个最高记录,并按升序对其进行排序。
第n个最高记录是结果集中的最后一个记录。然后,您将结果集按降序排序并得到第一个。
以下是查询以升序获得第n个最高记录:
SELECT * FROM table_name ORDER BY column_name ASC LIMIT N;
获取第n个最高记录的查询如下:
SELECT * FROM (SELECT * FROM table_name ORDER BY column_name ASC LIMIT N) AS tbl ORDER BY column_name DESC LIMIT 1;
幸运的是,MySQL为我们提供了LIMIT子句,该子句限制了返回的结果集中的行数。
您可以将上面的查询重写为以下查询:
SELECT * FROM table_name ORDER BY column_name DESC LIMIT n - 1, 1;
查询返回n-1行之后的第一行,因此您获得了第n个最高记录。
获取第n个最高记录示例
例如,如果要在产品表中获得第二昂贵的产品(n = 2),请使用以下查询:
SELECT productCode, productName, buyPrice FROM products ORDER BY buyPrice DESC LIMIT 1 , 1;
结果如下:
获得第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)
您可以使用第一种技术来获得与以下查询第二昂贵的产品相同的结果:
SELECT productCode, productName, buyPrice FROM products a WHERE 1 = (SELECT COUNT(productCode) FROM products b WHERE b.buyPrice > a.buyPrice);
在本教程中,我们向您展示了如何使用MySQL中的LIMIT子句在数据库表中选择第n条记录。