인프런 커뮤니티 질문&답변

헬로월드님의 프로필 이미지
헬로월드

작성한 질문수

[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이

2번 문제 풀이

NOT IN은 왜 안될까요..?

해결된 질문

작성

·

185

1

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

답변 2

3

지식공유자 J님의 프로필 이미지
지식공유자 J
지식공유자

문제의 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

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

헬로월드님의 프로필 이미지
헬로월드

작성한 질문수

질문하기