테이블이나 집합에서 원하는 만큼의 행만 가져오고 싶을 때 WHERE 절에서 행의 개수를 제한하는 목적으로 사용한다.
한 건의 행만 가져오고 싶을 때는
SELECT ENAME FROM EMP WHERE ROWNUM <= 1;
SELECT ENAME FROM EMP WHERE ROWNUM < 2;
로 작성한다.
두 건 이상의 N 행을 가져오고 싶을 때는 ROWNOM = N;처럼 사용할 수 없다.
SELECT ENAME FROM EMP WHERE ROWNUM <= N;
SELECT ENAME FROM EMP WHERE ROWNUM < N + 1;
Oracle는 정렬이 완료된 후 출력 되는 것이 아니라서 ORDER BY 절과 WHERE 절의 ROWNUM 조건을 같이 사용해도 두 조건으로는 원하는 겨로가를 얻을 수 없다.
SELECT ENAME, SAL
FROM (SELECT ENAME, SAl
FROM EMP
ORDER BY SAL DESC)
WHERE ROWNUM <= 3;
ROW LIMITING 절은 ORDER BY 절 다음에 기술하며, ORDER BY 절과 함께 수행된다. OROW와 ROWS는 구분하지 않아도 된다.
[OFFSET offset {ROW | ROWS}]FETCH {FIRST | NEXT} [{rowcount | percent PERCENT}] {ROW | ROWS} {ONLY | WITH TIES}]
OFFSET offset : 건너뛸 행의 개수를 지정한다.
FEFCT : 반환할 행의 개수나 백분율을 지정한다.
ONLT : 지정된 행의 개수나 백분율만큼 행을 반환한다.
WITH TIES : 마지막 행에 대한 동순위를 포함해서 반환한다.
SELECT EMPNO, SAL FROM EMP ORDER BY SAL, EMPNO FETCH FIRST 5 ROWS ONLY;
SELECT EMPNO, SAL FROM EMP ORDER BY SAL, EMPNO OFFSET 5 ROWS;