怎么获得MySQL结果集中的第n个最高值?使用MySQL LIMIT的处理案例
发表时间:2023-07-16 来源:明辉站整理相关软件相关文章人气:
[摘要]MySQL中最棘手的问题之一是:如何获得结果集中的第n个最高值,例如查询第二(或第n)贵的产品是哪个,显然不能使用MAX或MIN这样的函数来查询获得。 但是,我们可以使用MySQL LIMIT来解决...
MySQL中最棘手的问题之一是:如何获得结果集中的第n
个最高值,例如查询第二(或第n
)贵的产品是哪个,显然不能使用MAX或MIN这样的函数来查询获得。 但是,我们可以使用MySQL LIMIT
来解决这样的问题。首先,按照降序对结果集进行排序。
第二步,使用LIMIT
子句获得第n
贵的产品。
通用查询如下:
SELECT
column1, column2,...
FROM
table
ORDER BY column1 DESC
LIMIT nth-1, count;
下面我们来看看一个例子,products
表的结构如下所示 -
mysql> desc products;
+--------------------+---------------+------+-----+---------+-------+
Field Type Null Key Default Extra
+--------------------+---------------+------+-----+---------+-------+
productCode varchar(15) NO PRI NULL
productName varchar(70) NO NULL
productLine varchar(50) NO MUL NULL
productScale varchar(10) NO NULL
productVendor varchar(50) NO NULL
productDescription text NO NULL
quantityInStock smallint(6) NO NULL
buyPrice decimal(10,2) NO NULL
MSRP decimal(10,2) NO NULL
+--------------------+---------------+------+-----+---------+-------+
9 rows in set
查看以下产品表中的行记录:
mysql> SELECT productCode, productName, buyprice
FROM products
ORDER BY
buyprice DESC;
+-------------+--------------------------------------+----------+
productCode productName buyprice
+-------------+--------------------------------------+----------+
S10_4962 1962 LanciaA Delta 16V 103.42
S18_2238 1998 Chrysler Plymouth Prowler 101.51
S10_1949 1952 Alpine Renault 1300 98.58
S24_3856 1956 Porsche 356A Coupe 98.3
S12_1108 2001 Ferrari Enzo 95.59
S12_1099 1968 Ford Mustang 95.34
... ....
+-------------+--------------------------------------+----------+
110 rows in set
我们的任务找出结果集中价格第二高的产品。可以使用LIMIT
子句来选择第二行,如以下查询(注意:偏移量从0
开始,所以要指定从1
开始,然后取一行记录):
SELECT productCode, productName, buyprice FROM products
ORDER BY buyprice DESC
LIMIT 1, 1;
执行上面查询语句,得到以下结果 -
mysql> SELECT productCode, productName, buyprice FROM products
ORDER BY buyprice DESC
LIMIT 1, 1;
+-------------+--------------------------------+----------+
productCode productName buyprice
+-------------+--------------------------------+----------+
S18_2238 1998 Chrysler Plymouth Prowler 101.51
+-------------+--------------------------------+----------+
1 row in set
类似的,获取售价第三高、第四高的产品信息为:LIMIT 2, 1
和 LIMIT 3, 1
。
相关文章:
如何得到Mysql每个分组中的第N条记录
mssql 实现mysql limit sql语句
相关视频:
limit用法-布尔教育燕十八mysql入门视频教程
以上就是如何获得MySQL结果集中的第n个最高值?使用MySQL LIMIT的解决案例的详细内容,更多请关注php中文网其它相关文章!
学习教程快速掌握从入门到精通的SQL知识。