문제
다음 SQL의 IN 절에 대한 설명으로 적절하지 않은 것은?
SQLSELECT * FROM 부서 D WHERE D.DEPTNO IN ( SELECT E.DEPTNO FROM 사원 E WHERE E.EMPNM IN ('JOHN', 'SMITH') );
① 서브쿼리가 여러 행을 반환해도 IN 절에서 비교할 수 있다. ② 서브쿼리 결과에 동일한 DEPTNO가 여러 번 나와도 IN 비교 자체는 가능하다. ③ JOHN이라는 이름의 사원이 두 명이면 반드시 오류가 발생한다. ④ IN은 목록 중 하나와 일치하는지 판단하는 연산자이다.
정답
3번
해설
정답: 3. IN 절은 다중 행 결과를 처리할 수 있으므로 JOHN이라는 이름의 사원이 여러 명이어도 그 자체로 오류가 발생하지 않는다.
오답 풀이
- 1번: IN 절은 다중 행 서브쿼리와 함께 사용할 수 있다.
- 2번: 중복 값이 있어도 IN 비교는 가능하다.
- 3번: 단일 행 서브쿼리가 아니므로 여러 명이어도 오류가 아니다.
- 4번: IN의 기본 의미이다.
보충 개념 IN은 서브쿼리 결과 집합에 비교 값이 포함되는지 확인한다. 단일 행 비교 연산자 = 와 달리 여러 행이 반환되어도 사용할 수 있다.