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

Requête SQL avec Row_Number, trier par et clause where

rownum est une pseudo-colonne qui compte les lignes dans le jeu de résultats après la clause where a été appliquée.

C'est ce que vous essayez d'obtenir ?

SELECT *
FROM ( 
    SELECT id, column1, column2
    FROM atable ORDER BY 2 DESC
) 
WHERE ROWNUM < 100;

Comme il s'agit d'une pseudo-colonne qui est strictement un compteur de lignes résultant de la clause where, elle ne vous permettra pas de faire de pagination (c'est-à-dire entre 200 et 300).

C'est probablement ce que vous cherchez :

SELECT *
FROM
 (SELECT a.*, rownum rnum FROM
     (SELECT id, column1, column2 FROM atable ORDER BY 2 DESC) a WHERE rownum <= 300)
WHERE rnum >= 200;