首頁 >資料庫 >mysql教程 >訂購後如何限制Oracle查詢中的行?

訂購後如何限制Oracle查詢中的行?

Linda Hamilton
Linda Hamilton原創
2025-01-25 08:41:12310瀏覽

How to Limit Rows in Oracle Queries After Ordering?

限制結果集中的Oracle查詢

>

oracle的ROWNUMpseudoColumn與MySQL的LIMIT子句不同; 在處理ROWNUM>之前,分配了>>。 因此,訂購後直接使用ORDER BY不會限制行ROWNUM。為了實現這一目標,請使用一個子查詢:

此方法先以薪水(
<code class="language-sql">SELECT *
FROM (SELECT * FROM emp ORDER BY sal DESC)
WHERE ROWNUM <= n;</code>
)降序訂購

>表,然後外部查詢使用emp>將輸出限制為top lows。 sal對於需要上限和下邊界的更複雜的場景,需要一個嵌套的子查詢:ROWNUM n

Oracle 12c及以後的
<code class="language-sql">SELECT *
FROM (SELECT a.*, ROWNUM rnum
      FROM (SELECT * FROM your_table ORDER BY your_column) a
      WHERE ROWNUM <= :MAX_ROW_TO_FETCH)
WHERE rnum >= :MIN_ROW_TO_FETCH;</code>

Oracle 12c(以及後來的版本)使用>和

提供更簡化的語法:

FETCH FIRST OFFSET這將結果設定直接限制為按

訂購後的前10行。 若要指定偏移量(例如,跳過前20行並擷取下一個10),請使用
<code class="language-sql">SELECT *
FROM sometable
ORDER BY name
FETCH FIRST 10 ROWS ONLY;</code>
>子句:

> name OFFSET請參閱官方的Oracle文件以取得全面的範例和績效最佳化策略。

以上是訂購後如何限制Oracle查詢中的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn