1.단일 행 서브 쿼리
내부 쿼리문의 결과로 얻어지는 로우가 한 개
단일 행 비교 연산자(>, =, >=, <, <>, <=)
2.다중 행 서브 쿼리
내부 쿼리문의 결과로 얻어지는 로우가 여러 개
다중 행 비교 연산자(IN, ANY, SOM, ALL, EXISTS)
결과가 2개 이상 구해지는 쿼리문을 서브 쿼리로 기술할 경우에는 다중 행 연산자와 함께 사용해야 합니다.
부서별 최소 급여를 받는 사원의 사원번호와 이름을 출력하는 쿼리문을 작성해 봅시다.
ANY 조건은 메인 쿼리의 비교 조건이 서브 쿼리의 검색 결과와 하나 이상만 일치하면 참입니다.
> ANY는 찾아진 값에 대해서 하나라도 크면 참이 되는 셈이 됩니다. 그러므로 찾아진 값 중에서 가장 작은 값 즉, 최소값 보다 크면 참이 됩니다.
직급이 SALESMAN이 아니면서 급여가 임의의 SALESMAN 보다 낮은 사원을 출력하는 예입니다.
ALL 조건은 메인 쿼리의 비교 조건이 서브 쿼리의 검색 결과와 모든 값이 일치하면 참입니다.
찾아진 값에 대해서 AND 연산을 해서 모두 참이면 참이 되는 셈이 됩니다. > ALL 은 “모든 비교값 보다 크냐”고 묻는 것이 되므로 최대값보다 더 크면 참이 됩니다.
다음은 직급이 SALESMAN가 아니면서 직급이 SALESMAN인 사원보다 급여가 적은 사원을 모두 출력하는 예입니다.