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까지