더북(TheBook)

유형 2

입력

    SELECT count(*)
      FROM employees
     WHERE department_id IN ( SELECT department_id
                                FROM departments
                               WHERE parent_id IS NULL);

결과

    COUNT(*)
    ----------
             1

위 쿼리는 부서 테이블에서 parent_id가 NULL인 부서번호를 가진 사원의 총 건수를 반환하는 쿼리다. 여기서 메인 테이블은 사원 테이블이며, 괄호 안에 있는 서브 쿼리는 사원 테이블과 아무런 연관성이 없다. 그리고 유형1과 유형2 쿼리의 차이점을 살펴보면, 유형1은 서브 쿼리에서 단일 행을 반환한 반면 유형2는 여러 행을 반환했다는 점이다. 그럼 또 다른 유형을 살펴 보자.

유형 3

입력

    SELECT employee_id, emp_name, job_id
      FROM employees
     WHERE (employee_id, job_id ) IN ( SELECT employee_id, job_id
                                        FROM job_history);

결과

    EMPLOYEE_ID EMP_NAME          JOB_ID
    ----------- ----------------- ------------
    200         Jennifer Whalen   AD_ASST
    176         Jonathon Taylor   SA_REP

    2개의 행이 선택됨.

위 쿼리는 job_history 테이블에 있는 employee_id, job_id 두 값과 같은 건을 사원 테이블에서 찾는 쿼리로 서브 쿼리는 메인 쿼리와 연관성이 없다. 그리고 동시에

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