OracleのROWNUMとは?(LIMITのかわり)

OracleのROWNUMについて。

この記事の内容はコチラです

  • OracleのROWNUMの使い方
  • OracleはLIMITが使えない?

今回は、Oracleの「ROWNUM」について紹介します!

OracleはLIMITの代わりにROWNUMを使う

Oralceでデータ抽出する際、「最初の〇行を取得する」には疑似列「ROWNUM」を使います。

Mysqlでは「LIMIT」が使えますが、Oracleでは「LIMIT」が使えないので「ROWNUM」を使います。

サンプルデータ

--empテーブルを取得する
SELECT empno,empname FROM emp
order by empno;
empno empname
A001 佐藤花子
A002 田中太郎
A003 加藤一
A004 青木花
A005 藤田学

例1. 疑似列ROWNUMを使う

--上位3件(empno順)を取得する
SELECT empno,empname FROM 
 (
 SELECT empno,empname FROM emp
 order by empno
 )
WHERE ROWNUM <= 3
order by empno 
;
empno empname
A001 佐藤花子
A002 田中太郎
A003 加藤一

OracleでLimitと同じことをするには、まず副問い合わせを使用してデータをあらかじめ並び替えておきます。

ここでは(SELECT ~ order by empno)としてempno順に並び替えました。すると疑似列ROWNUMが1から順番に振られます。疑似列ROWNUMは並び替えた順に振られる仮の番号です。

上位3件を取得したい場合、この並び替えたあとの疑似列ROWNUMを使って「ROWNUM <= 3」とすれば取得できます。

これでMysqlのLIMITと同じことができました。

以上、OracleのROWNUMでした。

コメント