2011년 6월 1일 수요일

오라클 8i이상에서 한번의 쿼리로 페이징 처리하는 방법

페이징 처리를 하려면 전체 Row수와 order by한 부분 중 가져올 부분을 잘라서 가져와야 한다.
그래서 다음의 쿼리를 이용하면 된다. 단 아래의 Query는 Oracle 8i이상에서만 작동한다.
SELECT * FROM
( SELECT a.*, rownum+rnum-1 as total_rows
FROM ( SELECT a.*, rownum rnum
FROM (
원하는 ORDER BY 절이 포함된 SELECT 쿼리
) a
ORDER BY rnum DESC ) a
ORDER BY rnum )
WHERE rnum BETWEEN ? AND ?


예) 10개의 Row만 가져오는 Query
SELECT * FROM
( SELECT a.*, rownum+rnum-1 as total_rows
FROM ( SELECT a.*, rownum rnum
FROM (
SELECT column1, column2
FROM table
WHERE column like '%'
ORDER BY column DESC
) a
ORDER BY rnum DESC ) a
ORDER BY rnum )
WHERE rnum BETWEEN 1 AND 10

댓글 없음:

댓글 쓰기

ETL 솔루션 환경

ETL 솔루션 환경 하둡은 대용량 데이터를 값싸고 빠르게 분석할 수 있는 길을 만들어줬다. 통계분석 엔진인 “R”역시 하둡 못지 않게 관심을 받고 있다. 빅데이터 역시 데이터라는 점을 볼때 분산처리와 분석 그 이전에 데이터 품질 등 데이...