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

sql(oracle)を使用して、最初の10レコードを選択し、次に次の10レコードを選択します。

    これを行うにはかなり複雑な方法しかありません。これは、Oracleにとって本当に苦痛です。 LIMIT/OFFSET句を実装するだけです...

    行番号は後に割り当てられます 行はwhere句によって選択されているため、rownumは常に1で始まる必要があります。where rownum > x 常にfalseと評価されます。

    また、rownumは並べ替えが行われる前に割り当てられます。 、したがって、rownumはあなたの注文と同じ順序にはなりません。

    副選択で両方の問題を回避できます:

     select a,b,c, rn from 
        ( select a,b,c, rownum rn from 
             ( select a,b,c from the_table where x = ? order by c)
          where rownum < Y)
      where rn > X
    

    並べ替える必要がない場合(ただし、その場合のみ)、次のように簡略化できます

     select a,b,c, rn from
         ( select a,b,c, rownum rn from the_table where rownum < Y )
       where rn > X
    


    1. 注文によるグループ化

    2. MySQLクエリ結果を.CSVファイルに保存する方法

    3. Android:SQLiteデータベースの開閉

    4. 列が存在しませんか?