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 조건절에 해당하는 행들을 가져 올 수 있다.
반응형