読者です 読者をやめる 読者になる 読者になる

rownum

oracle

必ず1レコード目から評価されるので、中間レコードは取れない。
ROW_NUMBER()を使いなさい、ということ。

SQL> select * from koma_test;

        ID
----------
        10
         1
         7
         5
         3

SQL> select * from (select * from koma_test order by id) where rownum <= 2;

        ID
----------
         1
         3

SQL> select * from (select * from koma_test order by id) where rownum between 2 and 5;

レコードが選択されませんでした。

SQL> select * from (select * from koma_test order by id) where rownum >= 2 and rownum <= 5;

レコードが選択されませんでした。

SQL> select * from (select * from koma_test order by id) where rownum >= 2;

レコードが選択されませんでした。

SQL> select * from (select id, row_number() over (order by id) row_num from koma_test) where row_num between 2 and 5;

        ID    ROW_NUM
---------- ----------
         3          2
         5          3
         7          4
        10          5

SQL>