문제
다음 SQL문에서 서브쿼리가 여러 행을 반환할 때 오류가 발생하는 것은?
① SELECT * FROM 직원 WHERE 부서코드 IN (SELECT 부서코드 FROM 부서 WHERE 지역 = '서울') ② SELECT * FROM 직원 WHERE 부서코드 = ANY (SELECT 부서코드 FROM 부서 WHERE 지역 = '서울') ③ SELECT * FROM 직원 WHERE 부서코드 = (SELECT 부서코드 FROM 부서 WHERE 지역 = '서울') ④ SELECT * FROM 직원 WHERE EXISTS (SELECT 1 FROM 부서 WHERE 부서.부서코드 = 직원.부서코드 AND 지역 = '서울')
정답
3번
해설
③번의 = 연산자는 서브쿼리가 반드시 단일 값을 반환해야 하는데, 서울 지역에 여러 부서가 있다면 다중 행을 반환하여 오류가 발생한다. ①번의 IN, ②번의 ANY, ④번의 EXISTS는 모두 다중 행 서브쿼리를 처리할 수 있다.