블로그는 나의 힘!
[ Programing ]/Database2011. 10. 12. 13:39
여러 행을 반환하는 서브 쿼리를 다중행 서브 쿼리라고 하는데 단일 연산자 대신 다중행 비교 연산자를 사용한다.


IN
목록에 있는 임의의 멤버와 동일한 값을 비교 한다.


ANY
서브 쿼리에 의해 반환된 각 값과 비교 한다.
     WHERE 조건행 < ANY(서브쿼리)는 최대값 보다 작다는 것을 나타낸다.
     WHERE 조건행 > ANY(서브쿼리)는 최소값 보다 크다는 것을 나타낸다.
     WHERE 조건행 = ANY(서브쿼리)는 IN 과 동일하다.

ALL
서브 쿼리에 의해 반환된 모든 값과 비교 한다.
     WHERE 조건행 > ALL(서브쿼리)는 최대값 보다 크다는 것을 나타낸다.
     WHERE 조건행 < ALL(서브쿼리)는 최소값 보다 작다는 것을 나타낸다.


NOT
IN, ANY, ALL 연산자와 함께 사용한다.




예 :
SELECT last_name, salary, department_id
FROM employees
WHERE salary IN ( SELECT MIN(salary) FROM employees GROUP BY department_id );

각 부서에서 최소 급여를 받는 사원을 찾는다.
서브쿼리가 먼저 실행되고 메인 쿼리가 처리 되면서 검색 조건을 반환 한다.

이 다중행 서브쿼리는 아래 쿼리와 같다고 볼 수 있다.

SELECT last_name, salary, department_id
FROM employees
WHERE salary IN ( 2500, 3000, 3500, 4000, 4500, 5000, 8000, 10000, 15000 );

Posted by Mister_Q