본문 바로가기

ORACLE

오라클 FETCH

프로그래머스 SQL 문제를 푸는 과정에서

ROWNUM을 사용해서 푸는데 FETCH 를 사용해서 푸는 답안이있어 FETCH에 검색해봤다.

 

내가작성한 쿼리

SELECT 
NAME,
DATETIME
FROM 
(
SELECT 
A.NAME,
A.DATETIME
FROM
ANIMAL_INS A,
ANIMAL_OUTS B
WHERE
A.ANIMAL_ID = B.ANIMAL_ID(+)
AND B.ANIMAL_ID IS NULL
ORDER BY A.DATETIME ASC
)
WHERE ROWNUM < 4
;

 

ROWNUM을 사용하다보니 SELECT문을 한번더 감싸서 ROWNUM으로 1,2,3등을 추출하였다.

하지만 FETCH 를 사용하니 한번 더 SELECT문을 쓰지않고 바로 1,2,3등을 추출할수 있게 됐다.

SELECT 
A.NAME,
A.DATETIME
FROM
ANIMAL_INS A,
ANIMAL_OUTS B
WHERE
A.ANIMAL_ID = B.ANIMAL_ID(+)
AND B.ANIMAL_ID IS NULL
ORDER BY A.DATETIME ASC
FETCH FIRST 3 ROWS ONLY
;

 

FETCH 절은 오라클12c부터 사용할수 있다고 한다.

FETCH 절 : 행의 수를 한정/제한하는 역할로 부분 범위 처리시에 사용한다.

 

SELECT * FROM [테이블명]

FETCH FIRST [행의수] ROW ONLY//지정한 숫자가 없다면 1건만 가져온다.

OFFSET offset {ROW | ROWS }
FETCH { FIRST | NEXT } [{ rowcount | percent PERCENT}] {ROW | ROWS} {ONLY | WITH TIES }

OFFSET을 통해 시작 위치를 지정하고 FETCH문을 통해 출력 행의 범위를 지정한다.

 

'ORACLE' 카테고리의 다른 글

오라클 순번 채번 CONNECT BY LEVEL  (0) 2023.04.12
ORA-01652 에러  (0) 2021.10.21
ORA-28000 에러  (0) 2021.07.28
DB LINK 생성/삭제 방법  (0) 2021.07.28