다음 데이터에서 SQL을 실행했을 때 반환되는 고객 번호는?
CUSTOMER(id): 1, 2, 3
ORDERS(customer_id): 1, NULL
SELECT id
FROM CUSTOMER
WHERE id NOT IN (SELECT customer_id FROM ORDERS)
ORDER BY id;정답 1번
`NOT IN (1, NULL)`은 각 값이 목록의 모든 값과 다르다는 판정이 TRUE여야 한다. 고객 1은 1과 같아서 거짓이고, 고객 2와 3은 `값 <> NULL`이 UNKNOWN이 되어 전체 조건도 UNKNOWN이다. WHERE는 TRUE만 통과시키므로 반환 행은 없다. 주문이 없는 2와 3을 안전하게 찾으려면 상관 `NOT EXISTS`를 사용하는 편이 적절하다.
콘텐츠 정보
- 자료 유형
- 정처LAB 자체 제작
- 검수 상태
- 내용 검수 완료
- 해설 작성·검수
- 정처LAB 편집 기준
- 최종 검수
- 2026-08-16