トップページ >  Oracle SQL >  rownum
初版2007/03/29: 最終更新日2007/03/29
  rownum
目次
rownum
rownum
rownum擬似列は、セレクトした結果に対して行番号がシーケンシャルにセットされる列です。
以下のようにどのテーブルにも存在します。

SELECT EMP_ID,ROWNUM 
FROM   EMPLOYEE
WHERE  ROWNUM <= 5

結果は以下のようになります。

EMP_ID ROWNUM
------ ------
000001      1
000002      2
000003      3
000004      4
000005      5

このように自動的に行番号が振られますので、 WHERE ROWNUM <= 5 というように検索結果の行数を指定するのによく使用します。
では、以下のようにするとどうなるでしょうか。

SELECT EMP_ID,ROWNUM 
FROM   EMPLOYEE
WHERE  ROWNUM <= 5

ROWNUM = <5とした時です。こうするとセレクトされた結果は常に偽となるため検索結果は0件となります。

ROWNUMが5のレコードが表示されそうな感じがしますが、実際はフェッチ時にROWNUMを割り当てるため、最初のレコードがフェッチされた時にROWNUM = 5は偽となるため、次の行フェッチ時にROWNUMに1を割り当てに行きます。
これがエンドレスに続き、結果0件となります。