W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
FETCH 子句在 Oracle 中可以用來限制查詢返回的行數(shù),本教程將教大家如何使用 FETCH 子句。
以下說明了行限制子句的語法:
[ OFFSET offset ROWS]
FETCH NEXT [ row_count | percent PERCENT ] ROWS [ ONLY | WITH TIES ]
OFFSET 子句指定在行限制開始之前要跳過行數(shù)。OFFSET 子句是可選的。 如果跳過它,則偏移量為 0,行限制從第一行開始計算。
偏移量必須是一個數(shù)字或一個表達式,其值為一個數(shù)字。偏移量遵守以下規(guī)則:
FETCH 子句指定要返回的行數(shù)或百分比。
為了語義清晰的目的,您可以使用關(guān)鍵字 ROW 而不是 ROWS,F(xiàn)IRST 而不是 NEXT。 例如,以下子句的行為和產(chǎn)生的結(jié)果相同:
FETCH NEXT 1 ROWS
FETCH FIRST 1 ROW
僅返回 FETCH NEXT (或 FIRST) 后的行數(shù)或行數(shù)的百分比。
WITH TIES 返回與最后一行相同的排序鍵。請注意,如果使用 WITH TIES,則必須在查詢中指定一個 ORDER BY 子句。如果不這樣做,查詢將不會返回額外的行。
以下語句返回庫存量最高的前 5 個產(chǎn)品:
-- 以下查詢語句僅能在Oracle 12c以上版本執(zhí)行
SELECT
product_name,
quantity
FROM
inventories
INNER JOIN products
USING(product_id)
ORDER BY
quantity DESC
FETCH NEXT 5 ROWS ONLY;
得到結(jié)果如下
以下查詢使用 WITH TIES 選項的行限制子句:
-- 以下查詢語句僅能在Oracle 12c以上版本執(zhí)行
SELECT
product_name,
quantity
FROM
inventories
INNER JOIN products
USING(product_id)
ORDER BY
quantity DESC
FETCH NEXT 10 ROWS WITH TIES;
即使查詢請求了 10 行數(shù)據(jù),因為它具有 WITH TIES 選項,查詢還返回了另外兩行。
請注意,這兩個附加行在 quantity 列的值與第 10 行 quantity 列的值相同。
以下查詢返回庫存量最高的前 1% 的產(chǎn)品:
-- 以下查詢語句僅能在Oracle 12c以上版本執(zhí)行
SELECT
product_name,
quantity
FROM
inventories
INNER JOIN products
USING(product_id)
ORDER BY
quantity DESC
FETCH FIRST 1 PERCENT ROWS ONLY;
SQL
執(zhí)行上面示例查詢語句,得到以下結(jié)果 :
庫存 (inventories) 表總共有 1112 行,因此,1112 中的 1% 是 11.1,所以提取 12 (行)。
以下查詢將跳過庫存量最高的前 10 個產(chǎn)品,并返回接下來的 10 個產(chǎn)品:
-- 以下查詢語句僅能在Oracle 12c以上版本執(zhí)行
SELECT
product_name,
quantity
FROM
inventories
INNER JOIN products
USING(product_id)
ORDER BY
quantity DESC
OFFSET 10 ROWS
FETCH NEXT 10 ROWS ONLY;
得到以下結(jié)果 –
SQL
注意:這個功能可以用于分頁的實現(xiàn)
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: