문제
두 테이블의 데이터가 아래와 같을 때 결과 값으로 옳은 것은?
| COL1 | COL2 |
|---|---|
| A | 10 |
| B | 20 |
| C | 30 |
| COL1 | COL2 |
|---|---|
| A | 20 |
| B | 20 |
| C | NULL |
SQLSELECT * FROM TAB1 WHERE (COL1, COL2) NOT IN (SELECT COL1, COL2 FROM TAB2);
① 0 ② 10 ③ 20 ④ 40
정답
1번
해설
정답: 1. 다중 컬럼 NOT IN의 하위 질의 결과에 NULL이 포함되면 비교 결과가 UNKNOWN이 되어 결과가 반환되지 않을 수 있다.
오답 풀이
- 1번: NULL이 포함된 NOT IN 조건으로 인해 조회 결과가 0건이므로 옳다.
- 2번: 10은 특정 컬럼 값일 뿐 결과 건수로 볼 수 없다.
- 3번: 20은 특정 컬럼 값일 뿐 결과 건수로 볼 수 없다.
- 4번: 40은 주어진 데이터에서 도출되지 않는다.
보충 개념 NOT IN은 하위 질의 결과에 NULL이 포함될 때 주의해야 한다. NULL과의 비교는 TRUE/FALSE가 아니라 UNKNOWN이 되므로 의도와 다른 결과가 나올 수 있다.