ORACLEで範囲指定する方法

ORACLEにはMySQLのようにLIMITがないのでROWNUMを利用して範囲指定を行う。

SELECT
    c.id
FROM (
    SELECT
        ROWNUM rn,
        b.id
    FROM (
        SELECT
            a.id
        FROM
            table a
        ORDER BY
            a.id
    ) b
) c
WHERE
    c.rn > 2 AND c.rn <5;

MINUSを使った方がパフォーマンスが早い場合がある。

SELECT
    b.id
FROM (
    SELECT
        a.id
    FROM
        table a
    ORDER BY
        a.id
) b
WHERE
    ROWNUM <= 6
MINUS
    SELECT
        b.id
    FROM (
        SELECT
            a.id
        FROM
            table a
        ORDER BY 
            a.id
    ) b
    WHERE
        ROWNUM < 3