Maison > base de données > Oracle > le corps du texte

Comment écrire une pagination Oracle

PHPz
Libérer: 2023-04-21 10:57:13
original
1940 Les gens l'ont consulté

La pagination Oracle est une exigence très courante, en particulier lors du développement d'applications Web et d'API. La pagination peut réduire efficacement l'utilisation des ressources du serveur et offrir aux utilisateurs une expérience plus conviviale. Alors, comment la pagination Oracle doit-elle être écrite ? Présentons-le ci-dessous.

Tout d’abord, nous devons clarifier nos besoins. Supposons que nous ayons une table de commandes nommée commandes, qui contient de nombreuses informations sur les commandes. Nous devons interroger les données de numéro de page spécifiées en fonction d'un nombre fixe d'éléments par page. Par exemple, chaque page affiche 10 articles et interroge les données de commande à la page 3. Alors, comment y parvenir ? Ensuite, nous présenterons en détail plusieurs méthodes de mise en œuvre.

1. Utilisez une sous-requête pour implémenter la pagination

La sous-requête est un moyen courant d'implémenter la pagination dans Oracle, qui peut être réalisé en utilisant ROWNUM. L'idée de base est d'utiliser ROWNUM dans la requête interne pour le tri, puis d'utiliser ROWNUM dans la requête externe pour les opérations de pagination. Le code est le suivant :

SELECT * FROM (
  SELECT orders.*, ROWNUM rnum
  FROM (
    SELECT * FROM orders
    ORDER BY order_date DESC
  ) orders
  WHERE ROWNUM <= 30
) WHERE rnum >= 21;
Copier après la connexion

Dans le code ci-dessus, notre instruction de requête contient trois niveaux d'imbrication. L'instruction SELECT la plus externe utilise la clause WHERE pour filtrer ROWNUM et implémenter les opérations de pagination. L'instruction de requête interne contient une instruction ORDER BY, qui est principalement utilisée pour trier les données. L'instruction SELECT la plus interne spécifie les ordres de table que nous souhaitons interroger.

2. Utilisez la fonction ROW_NUMBER() pour implémenter la pagination

Une autre façon d'implémenter la pagination consiste à utiliser la fonction ROW_NUMBER(). Cette méthode est très utile lorsque nous devons trier selon une colonne spécifiée. Le code est le suivant :

SELECT *
FROM (
  SELECT orders.*,
         ROW_NUMBER() OVER(ORDER BY order_date DESC) AS row_num
  FROM orders
) WHERE row_num BETWEEN 21 AND 30;
Copier après la connexion

Dans le code ci-dessus, nous utilisons la fonction ROW_NUMBER() pour générer un nouveau champ row_num, qui sert à spécifier la position de chaque enregistrement après le tri. Nous pouvons utiliser la clause WHERE pour filtrer les enregistrements dans une plage spécifiée.

3. Utilisez OFFSET-FETCH pour implémenter la pagination

Après Oracle 12c, une nouvelle façon d'implémenter la pagination a été introduite, qui consiste à utiliser l'instruction OFFSET-FETCH. Par rapport aux deux méthodes précédentes, cette méthode est plus intuitive et concise, et le code est plus facile à lire et à comprendre. Le code est le suivant :

SELECT *
FROM orders
ORDER BY order_date DESC
OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
Copier après la connexion

Dans le code ci-dessus, nous utilisons l'instruction OFFSET-FETCH pour implémenter les opérations de pagination. OFFSET est utilisé pour spécifier le décalage, c'est-à-dire à partir de quelle ligne commencer l'interrogation ; FETCH est utilisé pour spécifier le nombre de lignes à interroger. Cette méthode peut grandement simplifier les instructions de requête et améliorer l’efficacité des requêtes.

Pour résumer, cet article présente trois façons d'implémenter la pagination Oracle, notamment en utilisant la sous-requête, la fonction ROW_NUMBER() et l'instruction OFFSET-FETCH. Chaque méthode a ses scénarios applicables, et les méthodes de mise en œuvre spécifiques sont également légèrement différentes. Nous pouvons choisir la méthode correspondante pour implémenter la pagination Oracle en fonction de différents besoins.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal