WITH 는 원래 inline-view(From 절의 서브쿼리) 를 쿼리 상단으로 올린 거라고 보면 됩니다.
- SELECT * FROM (서브쿼리) a;
- WITH a AS (서브쿼리) SELECT * FROM a;
그런데 with 문 중에서도 위와 같이 with 문에서 정의한 집합의 명칭을 With 구문의 서브쿼리 안에서 사용하는 독특한 방식이 가능합니다.
자기 참조가 가능한 것이죠. 자기참조, 순환쿼리, 재귀쿼리, 계층쿼리
UNION 상단 쿼리가 계층 시작점을 의미하고, 1 Level, (Start With ~)
UNION 하단 쿼리가 계층 전개하는 쿼리입니다. 1 Level > 2 Level > 3 Level (Connect By ~)