Shanghai Tengke Education Base de données Dameng formant des produits secs partageant l'utilisation de ROWNUM dans la base de données Dameng

ROWNUM est une colonne fausse qui représente le numéro de ligne de la requête de la table ou le nombre de lignes dans le jeu de résultats de la requête de jointure. Il sera alloué comme 1, 2, 3, 4, ... N, où N est le nombre de lignes. En utilisant ROWNUM, nous pouvons limiter le nombre de lignes renvoyées par la requête.

 

Prenons la table EMPLOYEE en mode RESOURCES dans la bibliothèque d'instances BOOKSHOP comme exemple

Les données complètes du tableau sont les suivantes:

 

 

Si nous voulons seulement voir les 5 premières lignes de données, nous pouvons écrire

SELECT * FROM RESOURCES.EMPLOYEE WHERE rownum <6;

 

 

Il est à noter qu'une valeur ROWNUM n'est pas affectée de manière permanente à une ligne. Il n'y a pas d'étiquette pour une ligne dans la table. Vous ne pouvez pas interroger la ligne dont la valeur ROWNUM est 5. La valeur ROWNUM n'augmentera que lorsqu'elle est allouée et la valeur initiale est 1. Autrement dit, seulement après qu'une ligne est satisfaite, la valeur ROWNUM augmentera de 1, sinon elle ne conservera que la valeur d'origine. Par conséquent, l'instruction suivante ne peut à aucun moment renvoyer de données.

 

SELECT * FROM RESOURCES.EMPLOYEE WHERE ROWNUM> 6;

SELECT * FROM RESOURCES.EMPLOYEE WHERE ROWNUM = 6;

 

 

Une fonction importante de ROWNUM est de contrôler la taille du jeu de résultats renvoyé, ce qui peut empêcher le tri des requêtes sur le disque. Parce que la valeur ROWNUM est affectée après l'analyse du prédicat de la requête et avant tout tri et agrégation. Par conséquent, nous devons prêter attention à l'utilisation de ROWNUM dans le tri et l'agrégation. Des résultats inattendus peuvent être obtenus. Par exemple, si nous voulons obtenir les cinq employés les plus âgés

SELECT * FROM RESOURCES.EMPLOYEE WHERE ROWNUM <6ORDER BY BIRTHDATE;

 

 

L'instruction ci-dessus affichera uniquement les 5 premières lignes de la table EMPLOYEE avant BIRTHDATE. Toutes les données de la table ne seront pas triées par BIRTHDATE et généreront les 5 premières lignes. Pour obtenir cette dernière, vous devez utiliser l'instruction suivante:

SELECT * FROM (SELECT * FROM RESOURCES.EMPLOYEE ORDER BY BIRTHDATE) WHERE ROWNUM <6;

或者 CHOISISSEZ LE TOP 5 * DE LA COMMANDE DE RESOURCES.EMPLOYEE PAR LA DATE DE NAISSANCE

Les résultats sont les suivants:

 

 

Concernant l'utilisation de ROWNUM, les restrictions suivantes doivent également être notées:

1. Dans la requête, ROWNUM peut être comparé et utilisé avec n'importe quelle expression numérique, mais il ne peut pas apparaître dans une expression booléenne contenant OR, sinon une erreur sera signalée;

 

2. ROWNUM ne peut apparaître que dans les sous-requêtes non corrélées et ne peut pas être utilisé dans les sous-requêtes associées, sinon une erreur sera signalée;

 

3. Dans les sous-requêtes non corrélées, ROWNUM ne peut atteindre que la même fonction que TOP, de sorte que les sous-requêtes ne peuvent pas contenir ORDER BY et GROUP BY;

 

4. Le sous-prédicat où se trouve ROWNUM ne peut avoir que la forme suivante: ROWNUM op exp, le type d'exp ne peut être que des nombres immédiats, des paramètres et des valeurs de variables, op ∈ {<, <=,>,> =, =, <>}.

Je suppose que tu aimes

Origine blog.csdn.net/qq_42726883/article/details/108463668
conseillé
Classement