Maison >base de données >tutoriel mysql >Comment fonctionne ROWNUM dans les requêtes de pagination Oracle ?

Comment fonctionne ROWNUM dans les requêtes de pagination Oracle ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-19 06:47:09345parcourir

How Does ROWNUM Work in Oracle Pagination Queries?

Comprendre ROWNUM dans Oracle Pagination

Question 1 : Pourquoi des résultats vides avec la plage ROWNUM ?

La requête Select * From Person Where rownum > 100 and rownum < 200 renvoie un ensemble de résultats vide car ROWNUM attribue des numéros aux lignes au fur et à mesure de leur récupération. La clause WHERE filtre après ROWNUM a attribué des numéros. Les lignes avec ROWNUM supérieur à 100 ne sont prises en compte que après que les 100 premières lignes ont déjà été traitées et affectées à des valeurs ROWNUM.

Question 2 : Requêtes ROWNUM simplifiées dans Oracle 12c

La fonctionnalité Top-n Row Limiting d'Oracle 12c offre une approche plus simple de la pagination. La syntaxe Select ... FROM ... WHERE rownum BETWEEN lowerBound AND upperBound sélectionne directement les lignes dans la plage spécifiée, éliminant ainsi le besoin de sous-requêtes.

Question 3 : Omettre la colonne ROWNUM

Pour éviter d'afficher la colonne ROWNUM, répertoriez explicitement les colonnes souhaitées dans la liste SELECT de la requête externe. Vous pouvez également créer une vue pour encapsuler la requête ou utiliser la commande NOPRINT de SQL*Plus pour supprimer les sorties indésirables.

Question 4 : Obtenir une pagination précise avec ROWNUM

Une pagination précise avec ROWNUM dépend d'une construction correcte des requêtes. Il est essentiel de trier les résultats à l’aide d’un identifiant unique (clé primaire) pour garantir une sélection de lignes cohérente sur toutes les pages. Bien que la commande par ROWNUM elle-même n'annule pas FIRST_ROWS(N), l'utilisation d'un identifiant unique garantit la récupération des lignes souhaitées.

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