在本教程中,您將學習如何使用各種技術選擇資料庫表中第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...