개념/배경
CTE는 WITH로 정의하는 이름 있는 임시 결과셋 바로 다음 한 개 DML에서만 참조 가능하며 실행이 끝나면 범위 소멸 가독성 향상과 쿼리 구조 분리에 유용함
사용법
WITH cte_name (col1, col2)
AS (
SELECT ...
)
DML필요 시 컬럼 목록 생략 가능하나 명시를 권장
주의사항
- 일부 DBMS에서는 배치 내에서 CTE 앞에 오는 쿼리를 세미콜론으로 종료 필요
- CTE 범위는 바로 뒤 한 개 DML로 한정됨
- 복잡한 쿼리에서 과도한 중첩 사용은 계획 복잡도 증가 가능