【Oracle SQL*Plus】末尾から指定された行数(=レコード数)を表示:WHERE ROWNUM

雑学

備忘録になります。末尾から指定された行数(=レコード数)を表示させる場合はWHERE, ROWNUMを利用します。サブクエリを使って工夫して表示させました。

SQL> SELECT * FROM TEST_TABLE;
         2,NAME-B    ,         2,B
         3,NAME-C    ,         3,C
         4,NAME-D    ,         4,D
         5,NAME-E    ,         5,E
         1,NAME-A    ,         1,A

SQL> SELECT COUNT(*) FROM TEST_TABLE;
         5

SQL> SELECT * FROM TEST_TABLE
  2  MINUS
  3  SELECT * FROM TEST_TABLE
  4  WHERE ROWNUM <= 2;
         1,NAME-A    ,         1,A
         4,NAME-D    ,         4,D
         5,NAME-E    ,         5,E

こんな感じで表示させます。ざっくり解説すると出力①(全表示)から出力②(表示させたくないレコード)を引き算しました。勝手にソートも掛かるのは謎です。
「ROWNUM >= 3」のような指定は期待通り表示されません。ROWNUM = 1からチェックされ、条件を満たされない時点で表示終了する仕様のようです。

関連記事