mysql 第n高 MySQL選擇第n個最高紀錄

2021-10-17 13:56:16 字數 1893 閱讀 7150

在本教程中,您將學習如何使用各種技術選擇資料庫表中第n個最高記錄。

使用max或min函式可以輕鬆選擇資料庫表中最高或最低的記錄。但是,選擇第n個最高紀錄有點棘手。 例如,從products表中獲得第二**格的產品。

要選擇第n個最高記錄,需要執行以下步驟:

首先,得到n個最高記錄,並按公升序排列。第n個最高記錄是結果集中的最後乙個記錄。

然後,按順序對結果集進行排序,並獲得第乙個結果集。

以下是以公升序獲得第n個最高記錄的查詢:

select

from

table_name

order by column_name asc

limit n;

獲得第n個最高記錄的查詢如下:

select

from

(select

from

table_name

order by column_name asc

limit n) as tbl

order by column_name desc

limit 1;

幸運的是,mysql為我們提供了限制返回結果集中的行數的limit子句。可以重寫上述查詢如下:

select

from

table_name

order by column_name desc

limit n - 1, 1;

查詢返回n-1行之後的第一行,以便獲得第n個最高記錄。

獲得第n個最高紀錄的例子

第一種方法

例如,如果要在products表中獲得第二個最昂貴的產品(n = 2),則使用以下查詢:

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

第二種方法

獲得第n個最高記錄的第二種技術是使用mysql子查詢:

select *

from table_name as a

where n - 1 = (

select count(primary_key_column)

from products b

where b.column_name > a. column_name)

可以使用第一種技術獲得相同的結果,以獲得第二**產品作為以下查詢:

select

productcode, productname, buyprice

from

products a

where

1 = (select

count(productcode)

from

products b

where

b.buyprice > a.buyprice);

執行上面查詢語句,結果如下:

| productcode | productname | buyprice |

| s18_2238 | 1998 chrysler plymouth prowler | 101.51 |

1 row in set

在本教程中,我們向您展示了如何使用mysql中的limit子句在資料庫表中選擇第n條記錄。

¥ 我要打賞

糾錯/補充

收藏加qq群啦,易百教程官方技術學習群

注意:建議每個人選自己的技術方向**,同乙個qq最多限加 3 個群。

Mysql 第N高的薪水

編寫乙個 sql 查詢,獲取 employee 表中第 n 高的薪水 salary id salary 1 100 2 200 3 300 例如上述 employee 表,n 2 時,應返回第二高的薪水 200。如果不存在第 n 高的薪水,那麼查詢應返回 null。limit第乙個引數與offset...

mysql 選擇列 選擇MySQL表的前N列

請先看看bill karwin的 answer.但是,如果您知道如何訂購列名,那麼可能會有乙個使用動態查詢的解決方案.要從表中選擇所有列名,可以使用如下查詢 select column name from information schema columns where table schema d...

mysql獲取第n條記錄

注 利用limit的這個引數使用的特點,可以很方便地在資料庫層面上實現分頁。求第n頁的結果集 select from table name where id 0 limit 第n頁的起始下標,頁大小 注意 limit的最小下標為0。第n頁的起始下標為 n 1 頁大小。頁大小 一頁有多少條記錄。mys...