페이징 처리를 하려면 전체 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 [출처] TIP - 오라클 8i이상에서 한번의 쿼리로 페이징 처리하는 방법 |작성자 후루꾸 |
'DataBase > Oracle' 카테고리의 다른 글
Chapter 2 Oracle 객체 - PLT 2.1 Table (0) | 2008.04.17 |
---|---|
PLT 1.3 롤백 세그먼트 (ROLLBACK SEGMENTS) (0) | 2008.04.17 |
PLT 1.2 리두 로그 파일(Redo Log Files) (0) | 2008.04.17 |
Chapter 1 Oracle Server (0) | 2008.04.17 |
한달을 요일별로 구함 (0) | 2008.04.17 |