SQL_ROWNUM & TOP-N 방식
ROWNUM
화면에 레코드가 출력될 때 가상으로 번호를 매겨서 같이 출력
Oracle에서 사용하는 예약어
§ 형식
[ SQL> select rownum, 필드명1, 필드명2,,,, from 테이블명; ]
# 예제
▷ emp 테이블에서 사원번호, 이름에 번호를 매겨서 출력
▶ [ SQL> select rownum, empno, ename from emp; ]
ROWNUM | EMPNO | ENAME |
---|---|---|
1 | 7369 | SMITH |
2 | 7499 | ALLEN |
... | ... | ... |
※ 실제 필드가 존재하는 것은 아니며, 보기 편하게 행을 구분해주는 가상 필드
※ 별칭 부여 가능
▶ [ SQL> select rownum empno, ename from emp ]
EMPNO | ENAME |
---|---|
1 | SMITH |
2 | ALLEN |
... | ... |
TOP-N
Top-N 방법
위에서부터 N번째 레코드까지 출력하는 방식
§ 형식
[ SQL> select rownum 별칭, 필드명,,, 테이블명.*
from(
select 필드명,,,,
from 테이블명
order by 필드명 desc
)
where 조건식; ]
※ 테이블명.* : select * from table 과 같은 기능
# 예제
▷ emp테이블에서 가장 최근에 입사한 3명의 이름, 입사일 출력
▶ [ SQL> select rownum num, ename, hiredate
from (
select ename, hiredate
from emp
order by hiredate desc
)
where rownum <= & num;
num의 값을 입력하십시오 : 3 ]
NUM | ENAME | HIREDATE |
---|---|---|
1 | ADAMS | 87/05/23 |
2 | SCOTT | 87/04/19 |
3 | MILLER | 82/01/23 |
Oracle을 이용해서 페이징처리를 할 때 필요한 ROWNUM과 TOP-N 정렬 방식에 대해 알아보았습니다.
ROWNUM의 경우 필드의 레코드에 숫자를 매겨주기 때문에 평소에도 데이터를 편하게 보는 방법으로 사용할 수 있겠습니다.