0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

oracleではLIMIT句が使えない

Last updated at Posted at 2025-01-21

はじめに

プログラマになり日々の仕事にあっぷあっぷですが
メモがてら書きます。

最近SQLを読むことが増えました!
見慣れないROWNUMという記載を見つけました👀

oracleってLIMIT句使えない

学習中ずっとMySQLを使用していたので、
oracleでLIMIT句が使えないことを初めて知りました!
LIMIT句の代わりに使用するのが、ROWNUMだそうです。

MySQLのLIMIT句

LIMIT句を使用すると、取得する行数を制限できます。

SELECT * 
FROM employees
ORDER BY hire_date DESC
LIMIT 10;

/*並び替えて、上から10件取得*/
SELECT * 
FROM employees
ORDER BY hire_date DESC
LIMIT 5, 10;

/*並び替えて、6番目から10件取得*/

oracleのROWNUM

Oracleでは ROWNUM を使用して、行番号を取得できます。
ただし、ROWNUMは取得する順序に従って番号が振られます。
そのためORDER BYを使用する場合は、サブクエリを使用してROWNUMを適用するのが一般的です。

SELECT id, name, hire_date 
FROM (
    SELECT id, name, hire_date 
    FROM employees
    ORDER BY hire_date DESC
) 
WHERE ROWNUM <= 10;

/*並び替えて、上から10件取得*/

また、オフセットを指定する場合はROWNUMの代わりにROW_NUMBER()を使用します。

SELECT id, name, hire_date 
FROM (
    SELECT id, name, hire_date, ROW_NUMBER() OVER (ORDER BY hire_date DESC) rn 
    FROM employees
) 
WHERE rn BETWEEN 6 AND 15;

/*並び替えて、6番目から10件取得*/

おわりに

設計書と睨めっこな毎日です。。
oracle特有なことは、都度調べて引き続き頑張ります!

参考

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?