header-img
Info :
  1. CTE (Common Table Expression: 공통 테이블 식)
  2. 재귀 CTE
728x90

CTE (Common Table Expression: 공통 테이블 식)

- 기존의 뷰, 파생 테이블, 임시 테이블 등으로 사용되던 것을 대신 할 수 있으며, 더 간결한 식으로 보여지는 장점을 가짐

- 실제로 CTE라는 키워드가 코드 안에 들어가지는 않고, WITH 구문을 이용함.

- SELECT문을 미리 정의하여 이름을 붙인 후, 이어지는 쿼리에서 테이블처럼 사용하는 기능

- CTE는 바로 다음에 오는 select절에만 해당 CTE를 이용할 수 있음.

- 목적에 따라 비재귀적 CTE, 재귀 CTE로 나눌 수 있음.

 

재귀 CTE

- 최초 CTE가 반복적으로 실행되어 전체 결과 집합을 얻을 때까지 데이터의 하위 집합을 반환하는 CTE

- 계층적 데이터를 반환하기 위한 목적으로 사용됨

- (**) 재귀 CTE에서 무한 루프가 발생할 경우를 대비하여, OPTION 절에 MAXRECURSION 값을 0~32767 사이의 값으로 지정하여 최대 반복 횟수를 지정할 수 있음. 기본 값은 100이며, 0으로 지정하면 최대 반복 횟수가 없어 무한으로 반복됨.

 

형식

WITH CTE_테이블명(열이름1, 열이름2, 열이름3 ...)
AS
(
    <쿼리문1 : SELECT * FROM TABLE_A>
    UNION ALL
    <쿼리문2 : SELECT * FROM TABLE_A JOIN CTE_테이블명>
)
SELECT * FROM CTE_테이블명;
728x90
더보기
BACKEND/MSSQL