如何獲得MySQL結果集中的第n個最高值?使用MySQL LIMIT的解決案例

來源:互聯網
上載者:User
MySQL中最棘手的問題之一是:如何獲得結果集中的第n個最高值,例如查詢第二(或第n)貴的產品是哪個,顯然不能使用MAX或MIN這樣的函數來查詢獲得。 但是,我們可以使用MySQL LIMIT來解決這樣的問題。

  • 首先,按照降序對結果集進行排序。

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

通用查詢如下:

SELECT     column1, column2,...FROM    tableORDER BY column1 DESCLIMIT 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, buypriceFROM productsORDER 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  productsORDER BY buyprice DESCLIMIT 1, 1;

執行上面查詢語句,得到以下結果 -

mysql> SELECT productCode, productName, buyprice FROM  productsORDER BY buyprice DESCLIMIT 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入門視頻教程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.