明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

怎么獲得MySQL結(jié)果集中的第n個(gè)最高值?使用MySQL LIMIT的處理案例

[摘要]MySQL中最棘手的問題之一是:如何獲得結(jié)果集中的第n個(gè)最高值,例如查詢第二(或第n)貴的產(chǎn)品是哪個(gè),顯然不能使用MAX或MIN這樣的函數(shù)來查詢獲得。 但是,我們可以使用MySQL LIMIT來解決...
MySQL中最棘手的問題之一是:如何獲得結(jié)果集中的第n個(gè)最高值,例如查詢第二(或第n)貴的產(chǎn)品是哪個(gè),顯然不能使用MAX或MIN這樣的函數(shù)來查詢獲得。 但是,我們可以使用MySQL LIMIT來解決這樣的問題。

  • 首先,按照降序?qū)Y(jié)果集進(jìn)行排序。

  • 第二步,使用LIMIT子句獲得第n貴的產(chǎn)品。

通用查詢?nèi)缦拢?/p>

SELECT 
    column1, column2,...
FROM
    table
ORDER BY column1 DESC
LIMIT nth-1, count;

下面我們來看看一個(gè)例子,products表的結(jié)構(gòu)如下所示 -

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

查看以下產(chǎn)品表中的行記錄:

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

我們的任務(wù)找出結(jié)果集中價(jià)格第二高的產(chǎn)品。可以使用LIMIT子句來選擇第二行,如以下查詢(注意:偏移量從0開始,所以要指定從1開始,然后取一行記錄):

SELECT productCode, productName, buyprice FROM  products
ORDER BY buyprice DESC
LIMIT 1, 1;

執(zhí)行上面查詢語句,得到以下結(jié)果 -

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

類似的,獲取售價(jià)第三高、第四高的產(chǎn)品信息為:LIMIT 2, 1LIMIT 3, 1。

相關(guān)文章:

如何得到Mysql每個(gè)分組中的第N條記錄

mssql 實(shí)現(xiàn)mysql limit sql語句

相關(guān)視頻:

limit用法-布爾教育燕十八mysql入門視頻教程

以上就是如何獲得MySQL結(jié)果集中的第n個(gè)最高值?使用MySQL LIMIT的解決案例的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!


學(xué)習(xí)教程快速掌握從入門到精通的SQL知識(shí)。