Maison >base de données >tutoriel mysql >Comment imiter efficacement la clause limite de MySQL dans les requêtes Oracle SQL?

Comment imiter efficacement la clause limite de MySQL dans les requêtes Oracle SQL?

Barbara Streisand
Barbara Streisandoriginal
2025-01-25 08:47:09974parcourir

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

reproduisant la limite de MySQL dans Oracle SQL

La clause

MySQL LIMIT simplifie la récupération d'un nombre spécifié de lignes après la commande, cruciale pour les données paginantes. Oracle, cependant, nécessite une approche différente.

Pourquoi Rownum ne suffit pas

Bien que le pseudocolumn d'Oracle puisse sembler une solution, il est appliqué ROWNUM avant la clause . Cela signifie que l'utilisation de ORDER BY pour une gamme de lignes ordonnées donne des résultats imprévisibles. ROWNUM

Approche de sous-requête efficace

Une méthode fiable implique une sous-requête pour commander d'abord les données, puis appliquer

pour limiter: ROWNUM

<code class="language-sql">SELECT *
FROM (
    SELECT *
    FROM emp
    ORDER BY sal DESC
)
WHERE ROWNUM <= 5;</code>

Définition des limites supérieures et inférieures

pour un contrôle plus précis, spécifiant les nombres de lignes minimum et maximum nécessite une requête plus complexe:

<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 et ultérieurs Améliorations

Oracle 12C et les versions ultérieures offrent une solution plus propre utilisant

et FETCH FIRST: OFFSET

<code class="language-sql">-- Retrieve the first 10 rows
SELECT *
FROM sometable
ORDER BY name
FETCH FIRST 10 ROWS ONLY;

-- Retrieve rows 20-30
SELECT *
FROM sometable
ORDER BY name
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;</code>
Cette syntaxe rationalisée fournit un moyen plus intuitif de gérer les limites de lignes et les décalages dans Oracle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn