ホームページ > データベース > mysql チュートリアル > クエリを効率的に制限してオフセットする方法は、Oracleになりますか?

クエリを効率的に制限してオフセットする方法は、Oracleになりますか?

Mary-Kate Olsen
リリース: 2025-01-25 08:52:11
オリジナル
848 人が閲覧しました

How to Efficiently Limit and Offset Query Results in Oracle?

Oracleクエリでの制限と相殺のマスター

結果設定制限に頻繁に使用されるOracleのOracleの句とは異なり、ROWNUMLIMIT前にROWNUM句が処理されます。 これは、単にを使用することで、結果の特定の順序付けされたサブセットを保証しないことを意味します。 ORDER BYROWNUM標準的なアプローチ(すべてのOracleバージョン):

mysqlの機能に相当するものを達成するには、ネストされたクエリを使用してください:

LIMITこのアプローチは最初にデータを注文し、次に

フィルターを適用し、上位5の最高給与が返されるようにします。
<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_FETCHOracle 12c(および後のバージョン)は、

句を使用して、よりエレガントなソリューションを提供します。

FETCH句は、結果を制限およびオフセットするためのよりクリーンで読みやすい方法を提供し、Oracle 12C以降の好みの方法になります。 古いバージョンの場合、ネストされたクエリアプローチが必要です

以上がクエリを効率的に制限してオフセットする方法は、Oracleになりますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート