限制結果集中的Oracle查詢
>oracle的ROWNUM
pseudoColumn與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 sal
對於需要上限和下邊界的更複雜的場景,需要一個嵌套的子查詢:ROWNUM
n
<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
這將結果設定直接限制為按
<code class="language-sql">SELECT * FROM sometable ORDER BY name FETCH FIRST 10 ROWS ONLY;</code>>子句:
>
name
OFFSET
請參閱官方的Oracle文件以取得全面的範例和績效最佳化策略。
以上是訂購後如何限制Oracle查詢中的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!