CTE(Common Table Expression)는 서브쿼리로 쓰이는 파생 테이블과 비슷한 개념으로 사용된다.
VIEW는 권한이 필요하고 사전에 정의를 해야 하는 반면 CTE는 권한이 필요없고 하나의 쿼리문이 끝날 때 까지만 지속되는 일회성 테이블이다.
CTE는 주로 복잡한 쿼리문에서 코드의 가독성과 재사용성을 위해 파생테이블 대신 사용하기에 유용하다.
CTE에는 재귀적 CTE와 비재귀적 CTE가 있다.
(MySQL은 8.0부터 지원한다.)
필요한 컬럼과 데이터를 미리 정의해 놓고 활용할 수 있어서 효율적인 쿼리를 작성하는데 유용하다.
WITH 구문
WITH 구문 이후에 오는 쿼리에서 임시 테이블의 테이블명을 사용하여 값을 참조할 수 있다.
TARGET_TABLE의 행 수 만큼 0의 값을 가진 임시 테이블
WITH RECURSIVE 구문
WITH RECURSIVE 구문은 가상 테이블을 생성하면서 가상 테이블 자신의 값을 참조하여 값을 결정할 때 사용된다.
댓글남기기