MySQL/MariaDB WITH RECURSIVE 재귀 쿼리
오늘은 프로그래머스 문제를 풀다가 처음 알게된 문법이 있어서 공유해보고자 합니다. 바로 WITH RECURSIVE
라는 재귀 쿼리입니다.
WITH RECURSIVE
WITH RECURSIVE
의 기본 구조는 아래와 같습니다.
1
2
3
4
5
WITH RECURSIVE 테이블명 AS(
SELECT 초기값 AS 컬럼별명1
UNION ALL
SELECT 컬럼별명1 계산식 FROM 테이블명 WHERE 제어문
)
WITH RECURSIVE
는 아래와 같이 WITH와 RECURSIVE로 나눌 수 있습니다.
WITH
- CTE(common table expression)을 생성하는 문법
- CTE란 해당 SQL문 내에서만 존재하는, 즉 메모리 상에 가상의 테이블을 저장할 때 사용된다.
RECURSIVE
- 서브쿼리에서 스스로를 참조하는 CTE
- 가상의 테이블을 생성하면서 자신의 값을 참조하여 결정할 때 사용
예시
1부터 5까지 출력하는 예시입니다.
1
2
3
4
5
6
7
8
9
10
11
WITH RECURSIVE d
AS (
select 1 as n
union all
select
n + 1
from d
where n < 5
)
select * from d
출력 결과
🔔포스팅 공지
개인 공부 기록용 블로그 입니다.
잘못된 부분이 있을 시 메일이나 댓글로 지적해주시면 감사드리겠습니다 :)
댓글남기기