IT

  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
Posted by sinpk