Database/SQL

오라클 부분 조회, 페이징 처리, ROW_NUMBER(), ROWNUM, 원하는 행 조회

리커니 2016. 1. 14. 17:50
반응형

 

 

오라클 부분 조회, 페이징 처리, ROW_NUMBER(), ROWNUM, 원하는 행 조회

 

오라클 쿼리로 페이징 처리를 하려할 때 생각나는 방법은 ROWNUM과 BETWEEN을 사용하면

될 것 같다는 생각을 했다.

 

SELECT ROWNUM 
     , T.*
  FROM 테이블명 T
 WHERE ROWNUM BETWEEN 1 AND 5;

 

뭐 이런식으로 하면 될 것 같았다.

하지만, ROWNUM의 사이값이 1이 아니면 출력되지 않았다.

 

SELECT ROWNUM
     , T.*
  FROM 테이블명 T
 WHERE ROWNUM BETWEEN 6 AND 10 ;

-출력안됨(오류는 아님)

 

 

 

 

이를 출력하기 위해서는 해당 SELECT문을 서브쿼리로 작성하면 된다.

 

SELECT rnum
     , T.*
  FROM ( SELECT ROWNUM AS rnum
              , S.*
           FROM 테이블명 S) T
  WHERE rnum BETWEEN 6 AND 10

 

그럼 특정 컬럼에 대해 정렬 후 행번호를 매긴 후 조회 하고 싶다면?

ROW_NUMBER() 함수를 사용한다.

 

SELECT rnum
     , T.*
   FROM ( SELECT S.*
              ,  ROW_NUMBER() OVER(ORDER BY 정렬할 컬럼명) as rnum
            FROM 테이블명 S) T
  WHERE rnum BETWEEN 6 AND 10

 

그럼 정렬하길 원하는 컬럼으로 정렬한 후에 행번호를 매기고

WHERE 조건절에 해당하는 행들을 가져 올 수 있다.

 

반응형