13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

【初心者】OracleでLimit句が使えないんだね。【備忘録】

Last updated at Posted at 2019-01-22

OracleでLimit句が使えなかった。

  • MYSQL では使えててさ、わたし、Limit句大好きだったんだ…。
  • Oracle初心者は使えると思って叩いた。
select ID from DUMMY limit 10;
[結果]
行1でエラーが発生しました。:
SQLコマンドが正しく終了されていません。

は?エラーとか聞いてないし。Oracleでは LIMIT句ってない んですね。

どうしても使いたかった。

だって、データ量が多すぎるけど中身なんだか知らなんだ…

ROWNUM を使用するとそれっぽいことができるらしい…?

ROWNUM ってなに?

ROWNUM とは?

  • ROWNUM 疑似列
  • WHERE 条件に入れることでレコード数を制限できる。
  • ORDER BY と WHERE に併用すると WHERE 条件が先に評価される。
    ←(うん??うううん?ソートして ROWNUM は別の方法になる…?)

実際に使ってみた。

select ID from DUMMY WHERE ROWNUM <= 10;
[結果]
ID
--------------
             1
             2
~ 略(10件データでてきた!!やった~)

できた!!

ソートしてID大きい順に出したい。出したい。

order by を使用するときは 副問合せ をすると良いらしい。

SELECT ID FROM 
( SELECT ID FROM DUMMY ORDER BY ID DESC )
WHERE ROWNUM <= 10;
[結果]
ID
--------------
         99672
         99671
         99670
         99669
         99668
         99667
         99666
         99665
         99664
         99663

できた!

まとめ

  • Oracleでlimitみたいなことするには、ROWNUM 疑似列 を使用する。
  • ソートするときは副問合せの中でソートする。
  • limit 句のことは忘れる。そんなやつはじめから、いなかった。
13
11
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?