ホームページ >データベース >mysql チュートリアル >Oracle SQLクエリでMySQLの制限条項を効果的にエミュレートする方法は?

Oracle SQLクエリでMySQLの制限条項を効果的にエミュレートする方法は?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-25 08:47:09969ブラウズ

How to Effectively Emulate MySQL's LIMIT Clause in Oracle SQL Queries?

Oracle SQL

でのMySQLの制限の複製 mysqlの

句は、注文後に指定された数の行数を取得することを簡素化します。 ただし、Oracleには別のアプローチが必要です

LIMITなぜrownumが十分ではないのか

oracleの

句の前に適用されます。これは、一連の順序付けされた行に

を使用すると、予測不可能な結果が得られることを意味します。 ROWNUM効果的なサブクエリアプローチORDER BY ROWNUM信頼できる方法では、最初にデータを注文するためのサブクエリが含まれ、次に制限に

を適用します。

上限と下限の定義

より正確な制御については、最小行数と最大行数の両方を指定するには、より複雑なクエリが必要です。 ROWNUM

<code class="language-sql">SELECT *
FROM (
    SELECT *
    FROM emp
    ORDER BY sal DESC
)
WHERE ROWNUM <= 5;</code>
Oracle 12cおよびその後の拡張

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の行の制限とオフセットを管理するためのより直感的な方法を提供します。

以上がOracle SQLクエリでMySQLの制限条項を効果的にエミュレートする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。