Mysql Limit 오라클 Oracle ROWNUM 페이징 처리




Mysql 에는 LIMIT 를 사용해서 간단히 페이징 쿼리를 만들 수 있지만, 오라클(Oracle) 에서는 LIMIT 를 사용할 수 없습니다. 하지만, ROWNUM을 사용하면 페이징 쿼리를 만들 수 있습니다. 이번 시간은 ROWNUM 사용 방법을 알아보겠습니다.

Mysql LIMIT 사용예시

NOTICE 테이블의 최근 등록일순으로 10개만 출력하는 쿼리입니다.

SELECT * FROM NOTICE WHERE 1 ORDER BY date DESC LIMIT 0,10

오라클(Oracle) ROWNUM 사용예시

위와 동일한 쿼리입니다.

SELECT A.*
FROM (
    SELECT ROWNUM AS ROW_NUM
    ,      *
    FROM   NOTICE WHERE 1=1
    ORDER BY date DESC
) A
WHERE ROW_NUM BETWEEN 1 AND 10

오라클(Oracle)이 추천하는 FETCH FIRST, OFFSET 사용예시

위와 동일한 쿼리이며, Oracle 12c 이후 버전에서 사용되는 FETCH FIRST, OFFSET 사용했습니다.

SELECT *
FROM   NOTICE
WHERE  1=1
ORDER BY date DESC
OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY

오라클 & 티베로 시노님(synonym) 간편 사용법