Oracle
 sql >> Datenbank >  >> RDS >> Oracle

SQL-Abfrage mit Row_Number, order by und where-Klausel

rownum ist eine Pseudospalte, die Zeilen in der Ergebnismenge nach zählt die where-Klausel wurde angewendet.

Ist es das, was Sie erreichen wollen?

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

Da es sich um eine Pseudo-Spalte handelt, die ausschließlich ein Zähler der Zeilen ist, die sich aus der where-Klausel ergeben, erlaubt sie Ihnen keine Paginierung (d. h. zwischen 200 und 300).

Das ist wahrscheinlich das, wonach Sie suchen:

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