데일리/2023

[SQL] START WITH, CONNECT BY, PRIOR, ORDER SIBLINGS BY

세모이 2023. 11. 10. 21:55
반응형

START WITH, CONNECT BY, PRIOR, ORDER SIBLINGS BY

table 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

result

C3
A
C
B
D

START WITH C2 IS NULL : 시작점을 정의. 여기서 시작점은 C2가 NULL인 행.

CONNECT BY PRIOR C1 = C2 : CONNECT BY 절은 부모와 자식 사이의 계층 구조를 정의 여기서는 현재 행의 C1 값이 이전 행의 C2 값과 일치하는 경우 연결된다.

ORDER SIBLINGS BY C3 DESC : ORDER SIBLINGS BY 절은 동일한 부모를 가진 형제 노드들 간의 정렬 순서를 정의. 여기서는 C3 열을 내림차순으로 정렬.

이해안감

레벨1이

C1=1, C2=NULL, C3='A'

레벨 2:

C1 값이 1인 행과 C2 값이 1인 행은 연결. PRIOR C1 = C2가 성립하는 경우를 찾는다고 설명

C1=2, C2=1, C3='B'
C1=3, C2=1, C3='C'

이들은 레벨 2에 한다는데 첫번째행 c1=1과 나머지 행중 c2=1인걸 찾는다는거인거 같음

레벨 3:

그럼 위에 이어서 c1=2인거?

C1 값이 2인 행과 C2 값이 2인 행은 연결 즉, PRIOR C1 = C2가 성립하는 경우를 찾는데

C1=4, C2=2, C3='D'

이 행은 레벨 3에 속한다

반응형