최대 1 분 소요

오늘은 프로그래머스 문제를 풀다가 처음 알게된 문법이 있어서 공유해보고자 합니다. 바로 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

출력 결과

image

🔔포스팅 공지
개인 공부 기록용 블로그 입니다.
잘못된 부분이 있을 시 메일이나 댓글로 지적해주시면 감사드리겠습니다 :)

댓글남기기