Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle/SQL :Pourquoi la requête SELECT * FROM enregistrements WHERE rownum>=5 AND rownum <=10 - renvoie zéro ligne

Dans Oracle, les valeurs Rownum sont attribuées après l'étape de filtrage de la requête - ce ne sont pas des lignes de la table, ce sont des lignes du jeu de résultats de la requête.

Ainsi, la première ligne qui revient aura toujours le numéro de ligne 1, la deuxième ligne qui revient le numéro de ligne 2, etc.

La valeur rownum n'est incrémentée qu'après son affectation, donc toute requête comme

select * from t where ROWNUM > 1

ne sera jamais renvoie tous les résultats. Cette requête dit "Je ne veux pas voir la première ligne qui m'est renvoyée, seulement celles qui suivent", ce qui est en quelque sorte un paradoxe, donc rien n'est renvoyé.

Voir Ask Tom:On ROWNUM et Limitation des résultats pour plus de détails.