sql >> Databasteknik >  >> RDS >> Oracle

SQL-fråga Med Row_Number, ordna efter och where-sats

rownum är en pseudokolumn som räknar rader i resultatuppsättningen efter var-klausulen har tillämpats.

Är det detta du försöker få fram?

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

Eftersom det är en pseudokolumn som strikt är en räknare av rader som härrör från where-satsen kommer den inte att tillåta dig att göra paginering (dvs. mellan 200 och 300).

Det här är förmodligen vad du letar efter:

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


  1. MySQL - Dynamic Pivot Table Grouping Issue

  2. Hur hittar jag de frågor som blockerar en annan fråga?

  3. Hämta och ändra SQL som används i en MySQL-vy för omkörning

  4. Vilken är den bästa metoden för att alltid få 2 decimaler i Oracle?