빛나는 개발자

[Oracle] 페이징 처리하기 본문

Database

[Oracle] 페이징 처리하기

마재선 2022. 8. 11. 09:34

1. ROWNUM 이란

 

• SELECT 데이터에 일련번호를 붙이는 것이다. 
• MySql에서 사용하는 LIMIT절을 Oracle에서는 사용할 수 없다.
• Oracle에서는 대신에 ROWNUM을 사용

 

2. LIMIT와 ROWNUM 차이점

 

• LIMIT의 경우 ORDER BY 절까지 모두 실행 후 해당 결과에서 원하는 행의 데이터를 가져온다.
• ROWNUM의 경우 쿼리가 완전히 수행되지 않은 데이터의 정렬 순서대로 번호를 매기기 때문에 원하는 결과를 가져 올 수 없다.

SELECT 순서

 

3. Oracle에서 페이징 처리

 

• 오라클에서 LIMIT와 동일한 결과를 얻기 위해서는 SELECT절로 한번 감싸서 정렬을 먼저 해준 후에 ROWNUM으로 번호를 매겨 주면 된다.

 

SELECT  PA.*
  FROM(
        SELECT WORK_SN           workSn
             , WORK_CN           workCn
             , ATCH_FILE_ID      atchFileId
             , RGTR_SN           rgtrSn
             , REG_DT            regDt
          FROM T_WORK
         WHERE USE_YN ='Y'
         ORDER BY WORK_SN DESC
         ) PA
  WHERE  ROWNUM <= 10

마지막에 Alias 필수 입니다!

Comments