: 계층 구조 전개의 시작 위치를 지정
시작 행은 여기서 지정됨
: 부모, 자식 관계 지정
🖍️ CONNECT BY에 조건절을 사용하는 경우
START WITH절에서 필터링된 데이터는 결과목록에 포함되지만
이후 데이터들은 재귀적으로 모든 하위노드가 제거됨
➡︎ where에 조건절을 사용하면 해당 조건을 만족하지 않는 데이터만 제거되지만 connect by에 사용하면 해당 노드의 하위 노드까지 제거
: PRIOR이 붙은 컬럼이 안붙은 컬럼을 찾아감
: 형제노드(동일 level) 사이에서 정렬 수행
TAB1
| C1 | C2 | C3 |
|---|---|---|
| 1 | A | |
| 2 | 1 | B |
| 3 | 1 | C |
| 4 | 2 | D |
SELECT C3
FROM TAB1
START WITH C2 IS NULL
CONNECT BY PRIOR C1 = C2
ORDER SIBLINGS BY C3 DESC
C2가 NULL인 행: A
C2가 1인 행: B, C
C2가 2인 행: D
ORDER SIBLINGS BY로 정렬 후:
A C B D
B
[오라클, Oracle] 계층 쿼리 (hierarchical query) - 고급 주제
[Oracle]계층형 쿼리 사용법(START WITH, CONNECT BY PRIOR, ORDER SIBLINGS BY)
SQL 자격검정 실전문제, 한국데이터산업진흥원