SQL - WITH RECURSIVE

hyun-jin·2025년 3월 7일

데이터 분석

목록 보기
15/100
post-thumbnail

데이터 분석 14일차

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

✅ WITH RECURSIVE

  • WITH RECURSIVE는 자기 자신을 반복 호출하여 재귀적으로 데이터를 생성하는 SQL 문법

📌 구조

WITH RECURSIVE 테이블명 AS (
    # 1️⃣ **기본값 (Anchor Member)** : 처음 실행될 쿼리
    SELECT 초기값
    
    UNION ALL
    
    # 2️⃣ **재귀 부분 (Recursive Member)** : 자기 자신을 호출하여 점진적으로 값 추가
    SELECT 다음 값 FROM 테이블명 WHERE 종료 조건
)
SELECT * FROM 테이블명;

✔️ UNION ALL을 사용해서 계속 새로운 데이터를 추가함.
✔️ 종료 조건 (WHERE)이 없으면 무한 루프가 되므로 꼭 필요!


📌 예제: 0~10까지 숫자 생성

WITH RECURSIVE numbers AS (
    SELECT 0 AS num
    UNION ALL
    SELECT num + 1 FROM numbers WHERE num < 10
)
SELECT * FROM numbers;

✅ 실행 과정
1️⃣ SELECT 0 AS num → num = 0 추가
2️⃣ SELECT num + 1 FROM numbers WHERE num < 10 → 1 추가
3️⃣ SELECT num + 1 FROM numbers WHERE num < 10 → 2 추가
...
10️⃣ num = 10까지 반복, 그 이후 종료

🔹 결과:

num
---
0
1
2
3
4
5
6
7
8
9
10

✅ 한 줄 요약

📌 WITH RECURSIVE는 자기 자신을 호출하여 반복 실행하는 SQL 문법!
📌 재귀 쿼리(UNION ALL)와 종료 조건이 핵심! 🚀

0개의 댓글