ORACLE SQL リファレンス(逆引き)

ORACLE SQL リファレンス

Web oracle.se-free.com
先頭から指定件数のレコードを取得する(ROWNUM)
スポンサード リンク

●先頭から指定件数のレコードを取得するにはROWNUMを使用します。

例1) 列「dept_id」が'D02'のレコードを先頭から10件検索する
select *
   from emp
 where
  dept_id = 'D02'
 and rownum <= 10


●n件目から指定件数のレコードを取得するには、インラインビューとROWNUMを使用します。

これは、インラインビューを使用しないと、以下の(2)の例のように、1件目(ROWNUM=1)のレコードが検索結果に含まれない場合に、正しく処理されないためです。

  (1)1件目(ROWNUM=1)のレコードが検索結果に含まれる場合

SQL> select emp_id,emp_name from emp where rownum >= 1;

EMP_I EMP_NAME
----- ----------
E01 なまえ1
E02 なまえ2
E03 なまえ3

3行が選択されました。


   (2)1件目(ROWNUM=1)のレコードが検索結果に含まれない場合

SQL> select emp_id,emp_name from emp where rownum > 1;

レコードが選択されませんでした。

  ※1件目(ROWNUM=1)のレコードが検索結果に含まれないので正しく処理されません。


例2)  列「dept_id」が'D02'のレコードを11件目から20件目まで検索する
select *
  from
    ( select
       rownum as row_id, emp_id, dept_id, emp_name
      from emp
      where
       dept_id ='D02')
  where
   row_id between 11 and 20
 ※上記のように、from句でインラインビューを使用して、rownumを変数row_idに代入して処理しています。
   このように処理すれば、1件目(ROWNUM=1)のレコードが検索結果に含まれない場合でも正しく処理されます。


スポンサード リンク


重複レコードを除外する(DISTINCT)
先頭から指定件数のレコードを取得する(ROWNUM)
n件目のレコードからm件目のレコードを取得する(ROWNUM)
グループ単位に、先頭から指定件数のレコードを取得する( ROW_NUMBER )
グループ単位に、n件目のレコードからm件目のレコードを取得する( ROW_NUMBER )

SQL(DML) へ
忘れっぽいエンジニアのオラクルSQLリファレンス TOPへ