SQLDSQL 활용난이도 3MCQ

SQLD SQL 활용 기출문제 #940

문제

다음 중 NOT EXISTS를 NOT IN으로 변환할 때 주의사항으로 가장 적절한 것은?

SQL
-- 원본 쿼리 SELECT 고객번호 FROM 고객 A WHERE NOT EXISTS ( SELECT 1 FROM 주문 B WHERE A.고객번호 = B.고객번호 AND B.주문상태 = '취소' );

① NOT IN으로 변환 시 연결조건을 생략해도 동일한 결과를 얻는다 ② NOT IN 서브쿼리에 NULL이 포함되면 예상과 다른 결과가 나올 수 있다 ③ NOT EXISTS와 NOT IN은 항상 동일한 성능을 보인다 ④ NOT IN 변환 시 DISTINCT를 반드시 사용해야 한다

정답

2

해설

NOT IN 연산에서 서브쿼리 결과에 NULL이 포함되면, 3-valued logic에 의해 전체 결과가 UNKNOWN이 되어 아무 행도 반환되지 않을 수 있습니다. 반면 NOT EXISTS는 NULL 값의 영향을 받지 않습니다. 따라서 NOT EXISTS를 NOT IN으로 바꿀 때는 NULL 여부를 반드시 고려해야 합니다.

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[SQLD] SQL 활용 기출 #940 | sqldpass