여러 행을 반환하는 서브 쿼리를 다중행 서브 쿼리라고 하는데 단일 연산자 대신 다중행 비교 연산자를 사용한다.
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 );
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 );
'[ Programing ] > Database' 카테고리의 다른 글
[MS-SQL] 쿼리 실행 시간 체크 관련 (0) | 2018.02.01 |
---|---|
[MSSQL] 프로시져 & 테이블 종속성 검색 (0) | 2014.04.25 |
[SQL] 서브쿼리 구문 및 지침 (0) | 2011.10.11 |
[SQL] 그룹 결과 제외 HAVING 절에 대해 (0) | 2011.10.10 |
[SQL] 데이터 그룹 생성 GROUP BY 에 대해 (0) | 2011.10.10 |