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