반응형
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에 속한다
반응형
'데일리 > 2023' 카테고리의 다른 글
[SQL] 데이터 모델링, 엔터티, 식별자 (0) | 2023.11.13 |
---|---|
[SQL] 중첩집계함수, SQL 실행순서, 이너조인, 아우터조인 (0) | 2023.11.09 |