sql >> Databáze >  >> RDS >> Oracle

SQL (ORACLE):ORDER BY a LIMIT

Před verzí 12.1 společnost Oracle nepodporuje LIMIT nebo OFFSET klíčová slova. Pokud chcete načíst řádky N až M sady výsledků, budete potřebovat něco jako:

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

nebo pomocí analytických funkcí:

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

Každý z těchto přístupů setřídí vám řádky N až M seřazeného výsledku.

Ve verzi 12.1 a novějších můžete použít OFFSET a/nebo FETCH [FIRST | NEXT] operátoři:

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



  1. Změny servisní skupiny v R12.2

  2. Know-How k obnovení smazaných záznamů v SQL Server

  3. Ukládání obrázku do databáze přímo nebo jako data base64?

  4. Převeďte sloupec Datetime z UTC na místní čas v příkazu select