Oracle
 sql >> Database >  >> RDS >> Oracle

Query SQL Con Row_Number, clausola order by e where

rownum è una pseudo colonna che conta le righe nel set di risultati dopo la clausola dove è stata applicata.

È questo che stai cercando di ottenere?

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

Perché è una pseudo colonna che è rigorosamente un contatore di righe risultanti dalla clausola where non ti consentirà di eseguire l'impaginazione (cioè tra 200 e 300).

Questo è probabilmente quello che stai cercando:

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