개발자 항해

서브쿼리(subquery) - 3. 단일 컬럼 서브쿼리 vs 다중 컬럼 서브쿼리 본문

카테고리 없음

서브쿼리(subquery) - 3. 단일 컬럼 서브쿼리 vs 다중 컬럼 서브쿼리

리치Y 2022. 7. 25. 21:34
  • 단일 컬럼 서브쿼리 vs 다중 컬럼 서브쿼리

 << 서브쿼리 유형 >>

 

  단일행 서브쿼리                                   다중행 서브쿼리

(단일행비교연산자)                              (다중행비교연산자)

 

  단일컬럼 서브쿼리                                다중컬럼 서브쿼리

    (비쌍비교방식)                                       (쌍비교방식)

 

 

 

1) 다중컬럼 서브쿼리 + 다중행 서브쿼리

 

 

 

위 서브 쿼리만 따로 실행 시켜보면 다중 컬럼과 다중 행 값이 넘어간다. 

 

그값을 메인쿼리 where절 뒤에 다중 컬럼으로 받고 필요한 값을 select하여 실행시키면

결과 값이 아래와같다.

 

 

위 쿼리의 뜻은 부서별 최소 급여(min(salary))를 받는 사원의

사원아이디(employee_id)와 이름(first_name), 부서아이디(department_id), 급여(salary)값을

출력하라는 것이었다.

 

 

자기 밑에 부하직원이 없는 사원, 즉 자기 자신이 매니저가 아닌 사원을 출력하려면 어떻게 해야할까?

그래서 아래와 같이 구문을 작성해보았다. 

그런데 쿼리를 출력시켜 보니 아무것도 나오지 않았다.

무엇이 문제 일까?

 

서브 쿼리를 실행시켜보면 null이 포함된 다중행들이 넘어가는 것을 알수있다.

 

이처럼 다중행 서브쿼리로부터 null값이 포함되어 반환되는 경우

메인 쿼리에 AND의 성격을 가지는 NOT IN 또는 <> ALL연산자를 사용하면

전체 결과 또한 null이 출력된다.

 

아래 구문처럼  null 값이 포함되지 않도록 수정하면 결과값이 나온다.