sql >> Database >  >> RDS >> Oracle

SQL (ORACLE):ORDER BY en LIMIT

Voorafgaand aan 12.1 ondersteunt Oracle de LIMIT of OFFSET trefwoorden. Als je de rijen N tot en met M van een resultatenset wilt ophalen, heb je zoiets nodig als:

SELECT a.*
  FROM (SELECT b.*,
               rownum b_rownum
          FROM (SELECT c.*
                  FROM some_table c
                 ORDER BY some_column) b
         WHERE rownum <= <<upper limit>>) a
 WHERE b_rownum >= <<lower limit>>

of met behulp van analytische functies:

SELECT a.*
  FROM (SELECT b.*,
               rank() over (order by some_column) rnk
          FROM some_table)
 WHERE rnk BETWEEN <<lower limit>> AND <<upper limit>>
 ORDER BY some_column

Elk van deze benaderingen geeft u de rijen N tot en met M van het gesorteerde resultaat.

In 12.1 en later kunt u de OFFSET . gebruiken en/of FETCH [FIRST | NEXT] operators:

SELECT *
  FROM some_table
 ORDER BY some_column
 OFFSET <<lower limit>> ROWS
  FETCH NEXT <<page size>> ROWS ONLY



  1. Ontbrekende maanden opnemen in Groeperen op zoekopdracht

  2. Hoe INSERT-statements uit een query te genereren bij gebruik van SQLcl (Oracle)

  3. Ongeldige standaardwaarde voor 'dateAdded'

  4. Hoe de opgeslagen procedure in Oracle SQL Developer te bewerken?