• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

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 일때도 정답이라고 나오는데 같은 건가요?

답변 1

답변을 작성해보세요.

0

네, 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