DB

[Database] ROWNUM 이란?

파주상남자의 오답노트 ㅣ 2025. 3. 19. 17:17

반응형

ROWNUM은 Oracle에서 쿼리 결과에서 각 행에 고유한 번호를 부여하는 가상 컬럼이다. 이 컬럼은 쿼리 실행 순서에 따라 번호를 매기므로, 결과가 반환되는 순서에 따라 번호가 달라질 수 있다. ROWNUM은 주로 결과 집합에서 특정 행을 선택하거나 제한할 때 유용하게 사용된다.

사용법

  • 기본 사용법: ROWNUM은 쿼리 결과에 번호를 붙이는데 사용된다. 예를 들어, ROWNUM을 사용해 첫 번째 10개의 행을 선택할 수 있다.
sql
SELECT ROWNUM, column1, column2 FROM your_table;
  • 결과 제한: ROWNUM을 사용해 결과를 제한할 수 있다. 예를 들어, 첫 번째 5개의 행만 가져오려면 아래와 같이 쿼리를 작성할 수 있다.
sql
SELECT * FROM your_table WHERE ROWNUM <= 5;
  • 정렬된 결과에서 ROWNUM 사용: ROWNUM은 쿼리의 실행 순서에 따라 번호가 매겨지기 때문에, ORDER BY 절을 사용한 후에 ROWNUM을 적용하려면 서브쿼리를 사용해야 한다.
     
sql
SELECT * FROM (SELECT * FROM your_table ORDER BY column1) WHERE ROWNUM <= 5;
이 예시에서는 your_table에서 column1을 기준으로 정렬한 후, 상위 5개의 행을 선택한다.
  • ROWNUM을 이용한 페이징: 페이징을 구현하려면 서브쿼리와 ROWNUM을 조합해서 사용할 수 있다.
     
sql
SELECT * FROM ( SELECT your_table.*, ROWNUM rnum FROM your_table WHERE ROWNUM <= 20 ) WHERE rnum > 10;
이 쿼리는 your_table에서 11번째부터 20번째까지의 항목을 선택한다.

주의점

  • ROWNUM은 결과가 반환되는 순서에 따라 번호가 부여되기 때문에, ORDER BY 절을 사용하기 전에 ROWNUM을 필터링하면 원하는 결과를 얻지 못할 수 있다. 이런 경우 서브쿼리를 사용해야 한다.
  • ROWNUM은 가상 컬럼이기 때문에 실제 테이블의 컬럼은 아니며, 쿼리가 실행될 때마다 동적으로 생성된다.
반응형