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

注文後にOracleクエリによって返される行数を制限するにはどうすればよいですか?

    このようにサブクエリを使用できます

    select *
    from  
    ( select * 
      from emp 
      order by sal desc ) 
    where ROWNUM <= 5;
    

    詳細については、Oracle/AskTomのトピック「ROWNUMと制限結果」も参照してください。

    更新 :結果を下限と上限の両方で制限するには、物事が少し肥大化します

    select * from 
    ( select a.*, ROWNUM rnum from 
      ( <your_query_goes_here, with order by> ) a 
      where ROWNUM <= :MAX_ROW_TO_FETCH )
    where rnum  >= :MIN_ROW_TO_FETCH;
    

    (指定されたAskTom-articleからコピー)

    アップデート2 :Oracle 12c(12.1)以降、行を制限したり、オフセットから開始したりするために使用できる構文があります。

    SELECT * 
    FROM   sometable
    ORDER BY name
    OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;
    

    その他の例については、この回答を参照してください。ヒントをくれたKrumiaに感謝します。



    1. Mysqlは列を分割できますか?

    2. CentOS用のMariaDBクラスターオフラインインストール

    3. UPDATEを使用したexecSQL()は更新されません

    4. 統計がロックされているテーブルを見つける方法