-
카테고리
-
세부 분야
데이터 분석
-
해결 여부
미해결
binary tree 질문 입니다.
22.11.08 18:09 작성 조회수 185
0
SELECT distinct(bs.n)
,CASE
WHEN bst.p IS NULL THEN "Root"
WHEN bst2.p IS NULL THEN "Leaf"
ELSE "Inner"
END
FROM bst
LEFT JOIN bst bst2 ON bst.n = bst2.p
ORDER BY bst.n
영상에서 푸실 떄는 WHEN 두번째 조건에서 bst2.n IS NULL 이렇게 푸셨는데
위와 같이 bst2.p IS NULL 일때도 정답이라고 나오는데 같은 건가요?
답변을 작성해보세요.
0
지식공유자 J
지식공유자2022.11.21
네, bst2.p IS NULL으로 조건을 주셔도 동일한 값이 나옵니다.
LEFT JOIN으로 인해 bst2에서 온 컬럼들이 모두 NULL값인 row들이 생기므로,
bst2.n이 NULL인 row의 bst2.p 역시 NULL입니다.
bst2.p IS NULL이라는 조건은 bst2.n IS NULL과 동일한 의미가 됩니다.
아래 쿼리를 돌려보시면 더 쉽게 이해하실 수 있을 거에요.
SELECT bst.n, bst.p, bst2.n, bst2.p
FROM bst
LEFT JOIN bst bst2 ON bst.n = bst2.p
답변 1