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

SQL-forespørgsel Med Row_Number, rækkefølge efter og hvor-klausul

rownum er en pseudokolonne, der tæller rækker i resultatsættet efter hvor-klausulen er blevet anvendt.

Er det det, du prøver at få?

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

Fordi det er en pseudo-kolonne, der udelukkende er en tæller af rækker, der stammer fra where-sætningen, vil den ikke tillade dig at foretage paginering (dvs. mellem 200 og 300).

Dette er sandsynligvis, hvad du leder 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. Sådan forbedrer du forespørgselsydeevne med mange JOINs

  2. Arbejde med datoer i Oracle SQL

  3. Distinkt vs gruppe efter

  4. SQL Server - Dirty Reads fordele og ulemper