Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

SQL (ORACLE):ORDER BY e LIMIT


Antes de 12.1, a Oracle não suportava o LIMIT ou OFFSET palavras-chave. Se você quiser recuperar as linhas N a M de um conjunto de resultados, precisará de algo como:
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>>

ou usando funções analíticas:
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

Qualquer uma dessas abordagens classificará fornecerá as linhas N a M do resultado classificado.

Na versão 12.1 e posterior, você pode usar o OFFSET e/ou FETCH [FIRST | NEXT] operadores:
SELECT *
  FROM some_table
 ORDER BY some_column
 OFFSET <<lower limit>> ROWS
  FETCH NEXT <<page size>> ROWS ONLY