sql >> データベース >  >> RDS >> Oracle

SQL(ORACLE):ORDERBYおよびLIMIT

    12.1より前のバージョンでは、OracleはLIMITをサポートしていません。 またはOFFSET キーワード。結果セットの行NからMを取得する場合は、次のようなものが必要です。

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

    または分析関数の使用:

    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
    

    これらのアプローチのいずれかでソートすると、ソートされた結果の行NからMが得られます。

    12.1以降では、OFFSETを使用できます および/またはFETCH [FIRST | NEXT] 演算子:

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



    1. MariaDBでのLN()のしくみ

    2. SQLServer2017でデータベースを復元する

    3. データベースでPIIを分類、検索、マスクする方法…

    4. mysqlのダンプとインポートの高速化