재귀 쿼리

Minji Lee·2025년 4월 22일
0

데이터베이스

목록 보기
4/5

SQL에도 재귀 쿼리 존재함!

WITH RECURSIVE 가상테이블명
AS (
	-- Non-Recursive 문장 (첫번째 루프에서만 실행됨)
	SELECT 1 AS N
    -- UNION을 사용해 재귀 구성
    UNION ALL
    -- Recursive 문장 (읽어 올 때마다 행의 위치가 기억되어 다음번 읽어 올 때 다음 행으로 이동)
    SELECT N+1 AS NUM
    FROM 가상테이블명
    WHERE 조건절
)

-- 재귀 쿼리 출력
SELECT * FROM 가상테이블명

[재귀 쿼리 사용법]

  • 반드시 UNION 사용해야함
  • 반드시 Non-Recursive도 최소 1개 필요(처음 한 번만 실행)
  • Recursive 문장 내에 가상 테이블 참조하는 반복문 필요
  • Recursive 문장은 반드시 정지조건(where절) 필요!

재귀쿼리 예제

Q) 1부터 10까지 숫자 출력하기

WITH RECURSIVE NUMBER AS (
  SELECT 1 AS NUM
  UNION
  SELECT NUM+1 AS N
  FROM NUMBER
  WHERE NUM < 10
)

SELECT * FROM NUMBER;
result

0개의 댓글