재유's

[Oracle] ROWNUM 본문

IT Story/: : Oracle

[Oracle] ROWNUM

Stella_NY 2019. 4. 9. 13:02

ROWNUM

결과집합(SELECT 쿼리 결과)이 메모리에 생성된 경우 결과 집합 내의 각 레코드에 붙여지는 가상의 순번

  • 구문형식
    • 결과집합을 먼저 생성해야 하므로, 일반적인 데이터 조회 구문을 괄호로 묶어서 가상의 테이블처럼 사용한다.(서브쿼리!)
    • rownum이라는 시스템 정의값과 가상의 테이블에 대한 모든 컬럼을 다시 조회한다.
1
2
3
4
5
SELECT ROWNUM AS RNUM, 조회결과.* FROM (
    SELECT 컬럼1, 컬럼2, ...,  컬럼n FROM 테이블
    [WHERE 조건]
    [ORDER BY 컬럼명 조건]
) 조회결과 별칭

ROWNUM을 사용한 데이터 부분조회

  • 오라클은 MySQL과 같은 페이징 기능(LIMIT n, m)이 없기 때문에 데이터에 대한 부분 조회는 ROWNUM에 대한 WHERE조건을 지정하여 서브쿼리 형식으로 사용한다.
  • n번째 위치부터 m건의 데이터를 조회하기
    • n이 0부터 시작된다고 가정할 경우 ROWNUM 은 1부터 계산되기 때문에 'n이상 m미만'이 아닌 'n초과, m이하'인 데이터를 조회한다.
1
2
3
4
5
6
7
SELECT * FROM (
    SELECT ROWNUM AS RNUM, 조회결과.* FROM (
        SELECT 컬럼1, 컬럼2, ...,  컬럼n FROM 테이블
        [WHERE 조건]
        [ORDER BY 컬럼명 조건]
    ) 조회결과 별칭 WHERE RNUM <= m
WHERE RNUM > n 

 

Comments