1. 페이지 수를 계산하여 셀렉트
SELECT *
FROM (SELECT T0.*, FLOOR((ROWNUM - 1) / 한 페이지에 보여지는 row수 + 1) PAGE
FROM (-- 쿼리를 할 실제 부분 Start
SELECT BBS_ID
,DEPTH_CD
,BBS_SEQ
,TTL
,CNTS
,COUNT(*) OVER() AS TOT_CNT
FROM MTI_BBS
-- 쿼리를 할 실제 부분 End
) T0
)WHERE PAGE = 페이지 값
2. ROW_NUMBER()를 이용한 페이징
SELECT * FROM (
SELECT A.*, ROW_NUMBER() OVER(ORDER BY ID DESC) AS NUM
FROM OP_SAMPLE A
)
WHERE NUM BETWEEN 999991 AND 1000000;
3. ROWNUM을 이용한 페이징 1
SELECT * FROM (
SELECT ROWNUM AS RNUM, Z.* FROM (
SELECT * FROM OP_SAMPLE ORDER BY ID DESC
) Z WHERE ROWNUM <= 1000000
) WHERE RNUM >= 999991;
4. ROWNUM을 이용한 페이징 2
SELECT * FROM (
SELECT ROWNUM AS rnum, A.* FROM (
<!-- sql 입력 -->
) A WHERE ROWNUM <= #{pagediv} * #{page}
) WHERE RNUM > #{pagediv} * (#{page} -1)
※ MySql의 경우
SELECT * FROM OP_SAMPLE
ORDER BY ID DESC LIMIT 999991, 10;
'소프트웨어 > Oracle' 카테고리의 다른 글
Number타입 컬럼의 자바 클래스의 필드 타입 (0) | 2013.07.15 |
---|---|
오라클 힌트 (0) | 2013.07.15 |
merge into 문법 (0) | 2013.06.27 |
엔티티 도메인 추가 & Subject Area 생성 (0) | 2011.05.31 |
[erwin7.2] logical/physical model (0) | 2011.05.30 |