[SQL] WITH RECURSIVE | 재귀적 CTE

·2024년 12월 5일

SQL

목록 보기
9/23

재귀적 CTC (WITH RECURSIVE)

  • 테이블 기반으로 재귀적 반복
WITH RECURSIVE 테이블명 (컬럼명) AS (
    SELECT 초기값 
    UNION ALL
    SELECT 반복할 쿼리 -- 이전값에 대해 쿼리 적용
    WHERE 반복 조건 -- FALSE가 나오면 반복종료!! where, limit 등 사용하시면됩니다
)
SELECT * FROM 테이블명;

예시

-- 예제1
WITH RECURSIVE numbers (num) AS (
    SELECT 1 -- 초기값은 1
    UNION ALL
    SELECT num + 1     -- 반복 쿼리: 이전 값에 1을 더함
    FROM numbers
    WHERE num < 3 -- 반복 조건: num이 3 미만 -> num이 3 되면 반복문 종료!!
)
SELECT * FROM numbers;
-- 결과: numbers 테이블 num 컬럼 밑에 1, 2, 3


-- 예제2
WITH RECURSIVE cte (n) AS
(
  SELECT 1
  UNION ALL
  SELECT n + 1 
  FROM cte 
  LIMIT 100 -- 100행까지 만들면 종료 
)
SELECT * FROM cte;
-- 결과: cte 테이블 n 컬럼 밑에 1부터 100까지

참고자료 - MySQL WITH RECURSIVE

profile
To Dare is To Do

0개의 댓글