明辉手游网中心:是一个免费提供流行视频软件教程、在线学习分享的学习平台!

怎么获得MySQL结果集中的第n个最高值?使用MySQL LIMIT的处理案例

[摘要]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, 1LIMIT 3, 1

相关文章:

如何得到Mysql每个分组中的第N条记录

mssql 实现mysql limit sql语句

相关视频:

limit用法-布尔教育燕十八mysql入门视频教程

以上就是如何获得MySQL结果集中的第n个最高值?使用MySQL LIMIT的解决案例的详细内容,更多请关注php中文网其它相关文章!


学习教程快速掌握从入门到精通的SQL知识。