오라클DB 페이징 쿼리
by 개발자
2024-04-11 22:07:33
조회수:395
오라클에서 페이징을 구현하기 위해서는 ROWNUM을 사용할 수 있습니다. ROWNUM은 각 행에 할당된 순차적인 번호를 나타냅니다.
이를 활용하여 원하는 페이지의 결과를 가져올 수 있습니다. 예를 들어, products 테이블에서 product_id로 정렬된 결과를 페이지 당 10개의 행으로 가져오는 쿼리는 다음과 같습니다:
SELECT * FROM (
SELECT * FROM products
ORDER BY product_id
) WHERE ROWNUM <= 10;
위의 쿼리는 첫 번째 페이지에 해당하는 결과를 가져옵니다. 하지만 이 쿼리만으로는 올바른 결과를 얻지 못합니다. 왜냐하면 ROWNUM이 쿼리 결과가 만들어진 이후에 할당되기 때문에 서브쿼리를 사용해야 합니다.
따라서, 서브쿼리를 사용하여 ROWNUM을 필터링하여 원하는 페이지의 결과를 가져올 수 있습니다. 예를 들어, 두 번째 페이지의 결과를 가져오려면 다음과 같이 쿼리를 작성할 수 있습니다:
SELECT * FROM (
SELECT ROW_NUMBER() OVER (ORDER BY product_id) AS rn, products.*
FROM products
)
WHERE rn BETWEEN 11 AND 20;
위의 쿼리는 11번째부터 20번째까지의 결과를 가져옵니다. 페이지당 행 수와 페이지 번호를 조정하여 원하는 페이지의 결과를 가져올 수 있습니다.