나중에 수정하자

 

전체 갯수와 목록 처리를 한번에
* pageNo : 현재 표시된 페이지 번호, 기본값 1
* pageRows : 한 페이지에 보여지는 로우 개수
SELECT P.*
FROM (
        SELECT T.* ,
             CEIL(ROWNUM / #{pageRows}) AS PAGE_NO ,
             COUNT(*) OVER() AS TOTAL_ROWS ,
             #{pageRows} AS PAGE_SIZE
      FROM (
              SELECT a, b, c
              FROM xxxx_table
              WHERE a = 'Y'
                    AND b = 'N'
              ORDER BY PRIORITY ASC, c DESC
      ) T
) P
WHERE PAGE_NO = #{pageNo}


쿼리를 2번 호출하는 방식
int startRownum = PageUtil.getStartRownum(pageNo, countPerPage);
int endRownum = PageUtil.getEndRownum(pageNo, countPerPage);
전체 카운트를 먼저 구한후 startRownum, endRownum을 프로그램에서 구한후
쿼리를 처리
SELECT *
FROM (
     SELECT C.*, ROWNUM AS rn
     FROM (
            SELECT a, b, c
            FROM t_httk_cafe_lecture A
            WHERE A.a = xxxx AND
               A.b = '0'
            ORDER BY c DESC, a DESC
     ) C
     WHERE ROWNUM <= #endRownum#
)
WHERE rn BETWEEN #startRownum# AND #endRownum#

Posted by gt1000

블로그 이미지
gt1000

태그목록

공지사항

어제
오늘

달력

 « |  » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함