Database/MySQL

[MySQL] 공통 테이블 식

IT수정 2024. 9. 10. 17:52

공통 테이블 식(Common Table Expression)은 주로 데이터베이스에 없는 테이블이 필요할 때 사용하며, 바로 다음에 실행할 SELECT 문에만 사용해야 한다는 특징이 있다. 공통 테이블 식은 목적에 따라 일반 공통 테이블 식과 재귀 공통 테이블 식으로 나뉜다. 이를 줄여서 일반 CTE, 재귀 CTE라고 줄여서 부른다.

 

일반 CTE

WITH [CTE_테이블 이름] (열 이름1, 열 이름2, ...)
AS
(
<SELECT 문>
)
SELECT [열 이름] FROM [CTE_테이블 이름];

 

재귀 CTE

WITH [CTE_테이블 이름] (열 이름1, 열 이름2, ...)
AS(
<SELECT * FROM 테이블 A> -- 쿼리 1(앵커 멤버)
UNION ALL
<SELECT * FROM 테이블 B JOIN CTE_테이블 이름> -- 쿼리 2(재귀 멤버)
)
SELECT * FROM [CTE_테이블 이름];

 

재귀 CTE의 실행 순서

  1. 최초에 쿼리 1을 실행한다. 이때 쿼리 2의 기본값은 0으로 초기화 된다.
  2. 이어서 쿼리 2를 실행한다. 이때 쿼리 2의 기본값은 1만큼 증가한다. 쿼리 1의 결과 행 수만큼 쿼리 2에서 CTE_테이블 이름을 재귀 호출하고, 쿼리 2의 기본값이 1씩 증가하면서 쿼리 1의 결과 행 수까지 도달해 결과가 더 없다면 재귀 호출을 중단한다.
  3. 외부 SELECT 문에서 과정 1, 2를 통해 만든 CTE 누적 결과를 검색한다.