Maison > base de données > Oracle > Comment remplacer le rownum dans Oracle

Comment remplacer le rownum dans Oracle

下次还敢
Libérer: 2024-05-03 00:18:32
original
714 Les gens l'ont consulté

En plus de la pseudo-colonne ROWNUM d'Oracle, vous pouvez utiliser les alternatives suivantes pour obtenir le numéro de séquence d'une ligne : 1. Sous-requête (en utilisant une sous-requête imbriquée) ; 2. Fonction analytique (telle que ROW_NUMBER()) ; (pour les lignes nouvellement insérées) ; 4. Table temporaire (en créant une table temporaire pour stocker les numéros de ligne).

Comment remplacer le rownum dans Oracle

Utilisez d'autres méthodes pour remplacer ROWNUM dans Oracle

Dans Oracle, la pseudo-colonne ROWNUM est utilisée pour obtenir le numéro de séquence de la ligne dans l'ensemble de résultats. Cependant, il peut y avoir des limitations ou des problèmes de performances lors de l'utilisation de ROWNUM dans certains cas. Vous pouvez donc envisager les alternatives suivantes :

1. Sous-requête

Utilisez une sous-requête imbriquée pour ajouter des numéros de ligne à partir de la requête principale :

<code class="sql">SELECT * FROM (
  SELECT
    row_number() OVER (ORDER BY <sort_column>) AS rownum,
    <columns>
  FROM <table_name>
) AS subquery;</code>
Copier après la connexion

2. Fonction analytique

Utilisez ROW_NUMBER() Fonction analytique Ajouter des numéros de ligne :

<code class="sql">SELECT
  ROW_NUMBER() OVER (ORDER BY <sort_column>) AS rownum,
  <columns>
FROM <table_name>;</code>
Copier après la connexion

3. Séquence

Pour les lignes nouvellement insérées, vous pouvez utiliser une séquence pour générer des numéros de ligne uniques :

<code class="sql">CREATE SEQUENCE rownum_seq START WITH 1;

INSERT INTO <table_name> (id, ..., rownum) VALUES (..., NEXT VALUE FOR rownum_seq);

SELECT
  rownum,
  <columns>
FROM <table_name>;</code>
Copier après la connexion

4. Table temporaire

Créez une table temporaire pour stocker les numéros de ligne :

<code class="sql">CREATE TEMPORARY TABLE rownum_temp (
  rownum NUMBER,
  <columns>
);

INSERT INTO rownum_temp (rownum, <columns>)
SELECT row_number() OVER (ORDER BY <sort_column>), <columns>
FROM <table_name>;

SELECT
  rownum,
  <columns>
FROM rownum_temp
ORDER BY rownum;</code>
Copier après la connexion

. Choisissez la bonne approche

Le choix de la bonne alternative dépend de vos exigences spécifiques et de vos considérations de performances. Les sous-requêtes et les fonctions analytiques sont efficaces pour des ensembles de données relativement petits. Pour les situations où les numéros de ligne doivent être générés lors de l'insertion, les séquences et les tables temporaires sont de meilleurs choix.

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!

Étiquettes associées:
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