2025-08-27 23:22
Tags:SQL
계층형 질의
- 조직도나 카테고리 처럼 부모-자식 관계를 가진 데이터를 쉽게 조회하기 위한 방법
START WITH
로 시작점을 정하고CONNECT BY
로 관계를 정의하여 원하는 계층 구조를 탐색
SELECT
LEVEL,
-- 다른 컬럼들
FROM
테이블명
START WITH
시작_조건 -- 예: 상사가 없는 직원 (상사_ID IS NULL)
CONNECT BY
PRIOR 자식_컬럼 = 부모_컬럼; -- 예: PRIOR 직원_ID = 상사_ID
START WITH
: 계층 탐색을 어디서 시작할지 정하는 출발점. 조직도로 비유하면, “사장님부터 시작해” 또는 “최사원부터 시작해”라고 지정하는 것.CONNECT BY
: 계층 관계의 연결 규칙을 정의. 부모와 자식 행을 어떻게 연결할지 데이터베이스에 알려주는 가장 핵심적인 부분.PRIOR
:CONNECT BY
절 안에서 사용되며, 부모 행의 컬럼을 가리키는 특별한 연산자.CONNECT BY PRIOR 자식_컬럼 = 부모_컬럼
은 “현재 행의 자식 컬럼 값이 부모 행의 부모 컬럼 값과 같은 것을 찾아 연결하라”는 의미.LEVEL
: 계층의 깊이를 나타내는 가상의 컬럼(Pseudo-column).START WITH
절에서 지정한 루트(root) 노드가 1이 되며, 한 단계 아래로 내려갈수록 1씩 증가.