본문 바로가기

Web/DB

[mysql] Recursive

728x90

 

 

WITH RECURSIVE 문

재귀 쿼리

 

 

프로그래밍 재귀함수 처럼 SQL에서 재귀 방식을 사용하는 방법임

 

WITH RECURSIVE cte_count 
AS ( 
    -- Non-Recursive 문장( 첫번째 루프에서만 실행됨 )
    SELECT 1 AS n
    UNION ALL
    -- Recursive 문장(읽어 올 때마다 행의 위치가 기억되어 다음번 읽어 올 때 다음 행으로 이동함)
    SELECT n + 1 AS num 
    FROM cte_count
    WHERE n < 3 
)

SELECT * FROM test;Copy

 

 

 

 

  1.  
  2. 메모리 상에 가상의 테이블을 저장한다.
  3. 반드시 UNION 사용해야한다.
  4. 반드시 비반복문(Non-Recursive)도 최소한 1개 요구된다. 처음 한번만 실행
  5. SubQuery에서 바깥의 가상의 테이블을 참조하는 문장(반복문)이 반드시 필요하다.
  6. 반복되는 문장은 반드시 정지조건(Termination condition)이 요구된다.
  7. 가상의 테이블을 구성하면서 그 자신(가상의 테이블)을 참조하여 값을 결정할 때 유용한다.

 

728x90

'Web > DB' 카테고리의 다른 글

[db] 기본 개념 정리  (0) 2023.10.17
[web security] XSS (Cross-Site Scripting)  (0) 2023.05.22
[mysql] 멀티게시판 구현 설계  (0) 2023.05.02
[mysql] with 절(가상테이블) 02  (0) 2023.05.01
[mysql] with 절(가상테이블) 01  (0) 2023.05.01