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