sql >> Base de Datos >  >> RDS >> Oracle

Consulta SQL con Row_Number, order by y cláusula where

rownum es una pseudocolumna que cuenta filas en el conjunto de resultados después se ha aplicado la cláusula where.

¿Es esto lo que estás tratando de conseguir?

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

Debido a que es una pseudocolumna que es estrictamente un contador de filas resultantes de la cláusula where, no le permitirá hacer paginación (es decir, entre 200 y 300).

Esto es probablemente lo que estás buscando:

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