반응형
오라클 부분 조회, 페이징 처리, 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 조건절에 해당하는 행들을 가져 올 수 있다.
반응형
'Database > SQL' 카테고리의 다른 글
Mysql 자음 초성 추출 함수, 자음으로 검색, 초성 검색 (4) | 2016.04.18 |
---|---|
Oracle 오라클 자음 초성 추출 함수, 자음으로 검색, 초성 검색 (0) | 2016.04.18 |
Oracle 오라클 KEEP()함수 사용법 그룹함수로 조회한 행 중에 다른 컬럼 가져오는 방법 (0) | 2015.12.22 |
오라클 Oracle 가장큰값, 두번째 큰값, 가장작은값, 두번째로 작은값 구하기 GREATEST, LEAST (0) | 2015.11.25 |
ORACLE LISTAGG 여러 행을 하나의 컬럼으로 가져오기 (0) | 2015.08.19 |
댓글