sql >> Databasteknik >  >> RDS >> Oracle

SQL (ORACLE):ORDER BY och LIMIT

Före 12.1 stöder inte Oracle LIMIT eller OFFSET nyckelord. Om du vill hämta raderna N till M i en resultatuppsättning, skulle du behöva något i stil med:

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>>

eller använda analytiska funktioner:

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

Båda dessa metoder kommer att sortera och ge dig raderna N till M av det sorterade resultatet.

I 12.1 och senare kan du använda OFFSET och/eller FETCH [FIRST | NEXT] operatörer:

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



  1. PostgreSQL jokertecken LIKE för något av en lista med ord

  2. Batch Mode Bitmaps i SQL Server

  3. Använd sammansatt primärnyckel som främmande nyckel

  4. Konvertera den nya raden till XML i en Oracle Trigger