SELECT문안에 SELECT문을 사용하는것
서브쿼리의 결과가 메인쿼리의 조건으로 사용됨
서브쿼리 종류 | 설명 |
---|---|
단일행 서브쿼리 | 하나의 행을 검색하는 서브쿼리 |
다중행 서브쿼리 | 하나 이상의 행을 검색하는 서브쿼리 |
다중열 서브쿼리 | 하나 이상의 열을 검색하는 서브쿼리 |
연산자 구분 | 종류 | 사용처 |
---|---|---|
단일 행 연산자 | =, >, >=, <, <=, <>, != | 단일 행, 다중 열 |
다중 행 연산자 | IN, NOT IN, EXISTS, ANY, ALL | 다중 행, 다중 열 |
서브쿼리 결과가 1개인것
SELECT * FROM employees a
WHERE a.salary = (SELECT salary FROM employees WHERE last_name = 'De Haan')서브쿼리 결과가 1개
서브쿼리 결과가 여러개
SELECT * FROM employees WHERE salary
IN (SELECT MIN(salary) FROM employees GROUP BY department_id)
서브쿼리 결과가 여러개
IN, NOT IN, EXISTS, ANY, ALL 사용
서브쿼리 열이 여러개
SELECT *
FROM employees
WHERE (job_id, salary) IN
(SELECT job_id, MIN(salary) FROM employees GROUP BY job_id)열이 여러개
from절 에서도 서브쿼리 작성이 가능
뷰와 같은역할을 하기 때문에 인라인뷰라고도 한다.
SELECT *
FROM employees A,
(SELECT department_id FROM departments WHERE department_name = 'IT') B
WHERE A.department_id = B.department_id