본문 바로가기
DB/SQL

[MySQL] WITH 재귀(RECURSIVE) 쿼리 계층 구조

by 꼬바리 2022. 6. 3.

주의 !! mysql 5.7 이하 미지원

WITH RECURSIVE 문

  • 메모리 상에 가상의 테이블을 저장
  • 재귀 쿼리를 이용하여 실제로 테이블을 생성하거나 데이터삽입(INSERT)을 하지 않아도 가상 테이블을 생성할 수 있다.
WITH RECURSIVE 테이블명 AS(
  SELECT 초기값 AS 컬럼별명1
  UNION ALL
  SELECT 컬럼별명1 계산식 FROM 테이블명 WHERE 제어문
 )
 

예시

h(컬럼)이 초기값 1 부터 제어문에 합당하는 5까지의 데이터를 갖는 가상 테이블 생성
WITH RECURSIVE CTE AS(
  SELECT 1 AS h
  UNION ALL
  SELECT h+1 FROM CTE WHERE h<5
)

SELECT * FROM CTE;
 

※ 결과 확인

728x90

댓글