서브쿼리란 하나의 SQL문 안에 포함되어 있는 또 다른 SQL쿼리를 말합니다.
즉 보조Query로써 최종결과를 출력하기 위해 사용되는 계산의 중간값 등을 반환하기 위한 쿼리이다.
서브쿼리 사항
서브쿼리로 인해 나오는 행의 개수에 따라 단일행 / 다중행 서브쿼리로 구분이 됩니다.
단일 행 서브쿼리
서브쿼리의 결과가 1건으로 (<, >, <=, >=, <>)와 같이 사용합니다.
다중 행 서브쿼리
서브쿼리의 결과가 1건 이상으로 (IN, ALL, ANY, SOME)과 같이 사용합니다.
사용예)
1. WHERE 절
메인쿼리SELECT EMPLOYEE_ID, EMP_NAME, SALARY FROM HR.EMP
서브쿼리
(SELECT AVG(SALARY) FROM HR.EMP)
결합
SELECT EMPLOYEE_ID, EMP_NAME, SALARY FROM HR.EMP WHERE SALARY >= (SELECT AVG(SALARY) FROM HR.EMP)
: HR계정의 EMP테이블의 평균임금보다 큰 임금을 조회합니다.
1. FROM 절
메인쿼리SELECT A.EMPLOYEE_ID, A.EMP_NAME, A.SALARY FROM HR.EMP A
서브쿼리
(SELECT AVG(SALARY) AS A1 FROM HR.EMP)
결합
SELECT A.EMPLOYEE_ID, A.EMP_NAME, A.SALARY FROM HR.EMP A, (SELECT AVG(SALARY) AS A1 FROM HR.EMP) B WHERE A.SALARY >= B.A1;
: B의 조회결과에서의 임금보다 큰 A테이블의 결과를 조회합니다.