ROWNUM
LIMIT
前にROWNUM
句が処理されます。 これは、単にを使用することで、結果の特定の順序付けされたサブセットを保証しないことを意味します。
ORDER BY
ROWNUM
標準的なアプローチ(すべてのOracleバージョン):mysqlの機能に相当するものを達成するには、ネストされたクエリを使用してください:
LIMIT
このアプローチは最初にデータを注文し、次に
<code class="language-sql">SELECT * FROM ( SELECT * FROM emp ORDER BY sal DESC ) WHERE ROWNUM <= 5;</code>
結果の相殺および制限結果:ROWNUM
および
を希望の上限と下限に置き換えます。 これにより、注文後に特定の範囲内に行が取得されます Oracle 12c and Beyond:The<code class="language-sql">SELECT * FROM ( SELECT a.*, ROWNUM rnum FROM ( SELECT * -- Your main query with ORDER BY clause FROM some_table ORDER BY some_column ) a WHERE ROWNUM <= :MAX_ROW_TO_FETCH ) WHERE rnum >= :MIN_ROW_TO_FETCH;</code>
:MAX_ROW_TO_FETCH
:MIN_ROW_TO_FETCH
Oracle 12c(および後のバージョン)は、
FETCH
句は、結果を制限およびオフセットするためのよりクリーンで読みやすい方法を提供し、Oracle 12C以降の好みの方法になります。 古いバージョンの場合、ネストされたクエリアプローチが必要です
以上がクエリを効率的に制限してオフセットする方法は、Oracleになりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。