더북(TheBook)

쿼리 10-4의 서브쿼리를 보면 사원정보 테이블에서 사원 명이 ‘세종대왕’인 건의 dept_id 값을 반환해 부서정보 테이블의 dept_id 값과 같은 건을 조회하고 있습니다. WHERE 절에서 동등 연산자를 사용하고 있으므로 서브쿼리에서 반환하는 데이터는 반드시 1건 혹은 0건이어야 합니다. 0건인 경우에는 조회되는 데이터가 없겠죠. 만약 서브쿼리에서 여러 건의 데이터를 반환하려면 동등 연산자 대신 IN 연산자를 사용해야 합니다.

쿼리 10-5 다중 행을 반환하는 중첩 서브쿼리

SELECT *
  FROM dept_master a
 WHERE a.dept_id IN ( SELECT b.dept_id
                        FROM emp_master b
                       WHERE b.age BETWEEN 40 AND 49
                    );

 

▲ 그림 10-5 쿼리 10-5를 실행한 결과

 

쿼리 10-5의 서브쿼리는 사원정보 테이블에서 40대에 속하는 사원의 부서번호를 조회합니다. 그리고 부서정보 테이블에서 서브쿼리가 반환한 부서번호에 해당되는 부서만 조회하고 있습니다. 40대에 속하는 사원은 ‘홍길동’과 ‘세종대왕’이고 이들의 부서번호는 각각 3과 4이므로 최종 결과로 전산팀과 마케팅팀이 조회된 것입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.