怎么獲得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知識。