[SQL] 재귀적 공통 테이블 표현식 (CTE)

정석·2024년 5월 31일

SQL

목록 보기
5/5

앵커 멤버(Anchor Member): 재귀 프로세스를 시작하는 초기 쿼리

재귀 멤버(Recursive Member): 앵커 멤버의 결과를 기반으로 반복적으로 호출되는 쿼리


재귀 CTE의 기본 구조

WITH RECURSIVE cte_name AS (
    -- 앵커 멤버
    SELECT initial_value AS column_name
    UNION ALL
    -- 재귀 멤버
    SELECT column_name + increment_value
    FROM cte_name
    WHERE condition
)
SELECT * FROM cte_name;

재귀 CTE의 실행 과정

  1. 앵커 멤버 실행: 앵커 멤버 쿼리가 먼저 실행되어 초기 결과 집합을 생성합니다.
  2. 재귀 멤버 실행: 재귀 멤버 쿼리가 앵커 멤버의 결과를 사용하여 새로운 결과 집합을 생성합니다.
  3. 반복 실행: 재귀 멤버 쿼리가 반복적으로 실행되어 각 반복에서 이전 결과를 사용하여 새 결과를 생성합니다.
  4. 종료 조건 확인: 재귀 멤버의 종료 조건이 만족되면 반복이 중단됩니다.

예제: 1부터 12까지의 숫자 생성

WITH RECURSIVE hours AS (
    -- 앵커 멤버: 초기 값 1을 생성
    SELECT 1 AS hour
    UNION ALL
    -- 재귀 멤버: hour 값을 1씩 증가시킴
    SELECT hour + 1
    FROM hours
    WHERE hour < 12
)
-- 최종 결과 집합을 선택
SELECT * FROM hours;

프로그래머스 실전 문제

프로그래머스 - 입양 시각 구하기(2) 문제

0개의 댓글