작성
·
266
·
수정됨
0
Leaf는 자식이 없다는 것을 이용해서
두 번째 조건으로 P의 값과 N이 같지 않을 때 'Leaf' 로 출력 되도록 아래와 같은 쿼리로 작성해 보았습니다.
근데 Leaf가 출력 되지 않는 오답이 나오는데, 이유가 뭘까요?
위와 같은 조건으로 쿼리를 작성하려면 어떻게 작성해야 하는지도 궁금합니다!
답변 1
0
not in ()은 괄호 안에 들어가는 값 중 null이 있으면 동작하지 않습니다.
(참고 문서: https://stackoverflow.com/questions/5231712/sql-not-in-not-working)
여기서도 p 컬럼의 값 중 null이 있기 때문에 오류가 납니다.
그러므로 아래 쿼리와 같이 null을 제외해 주어야 합니다.
select n
, (case when p is null then 'Root'
when n not in (select distinct p from bst) then 'Leaf'
else 'Inner' end) as node_type
from bst
order by n