데일리/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에 속한다
반응형