개념/배경

CTE는 WITH로 정의하는 이름 있는 임시 결과셋 바로 다음 한 개 DML에서만 참조 가능하며 실행이 끝나면 범위 소멸 가독성 향상과 쿼리 구조 분리에 유용함

사용법

WITH cte_name (col1, col2)
AS (
  SELECT ...
)
DML

필요 시 컬럼 목록 생략 가능하나 명시를 권장

주의사항

  • 일부 DBMS에서는 배치 내에서 CTE 앞에 오는 쿼리를 세미콜론으로 종료 필요
  • CTE 범위는 바로 뒤 한 개 DML로 한정됨
  • 복잡한 쿼리에서 과도한 중첩 사용은 계획 복잡도 증가 가능

참고자료