• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    해결됨

NOT IN은 왜 안될까요..?

21.06.21 14:53 작성 조회수 148

1

위 쿼리가 정답 쿼리인데요. 이 쿼리를 아래와 같이 바꾸면 답이 안되는 이유가 무엇일까요...?

답변 2

·

답변을 작성해보세요.

3

문제의 Sample Input을 예시로 설명 드리겠습니다.

SELECT N FROM BST WHERE N NOT IN (SELECT DISTINCT P from BST) 

위 쿼리를 실행하면 N을 하나하나씩 2, 5, 8, Null과 비교해서 N!=2, N!=5, N!=8, N!=null, 이 4가지 연산 모두 True 값을 반환하는 경우에만 N이 출력됩니다. 

그런데 null과의 비교연산에서는 True도 False도 아닌 Unknown 값을 반환하게 되므로, 어떤 N도 N!=null 을 통과하지 못합니다.

WHERE P IS NOT NULL 조건을 넣어주면 N과 null의 비교연산을 하지 않아도 되니 N!=2, N!=5, N!=8, 이렇게 3가지 조건을 모두 만족하는 값들이 출력됩니다.

0

circlejoon님의 프로필

circlejoon

2022.05.04

웬만하면 Not in 보단 in으로 쓰는게 안전하겠군요 감사합니다.