728x90
정의
서브 쿼리 내부에서 외부 쿼리의 값을 참조하는 서브 쿼리를 뜻한다.
일반적인 서브 쿼리의 경우 외부 쿼리의 값을 참조하지 않는다.
하지만, 상호 연관 서브쿼리의 경우 외부 쿼리의 컬럼을 참조하기 때문에, 행마다 서브 쿼리의 결과가 달라지게 된다.
사용 예시
설명만 들으면 잘 이해가 안가기 때문에 예시로 설명을 해보겠다.
- 사원 정보를 담고있는
emp
테이블emp_id name sal dept_id 1 Alice 3000 10 2 Bob 4000 10 3 Carol 2500 20 4 Dave 3500 20 5 Erin 2000 30 - 부서 정보를 담고있는
dept
테이블dept_id dept_name 10 HR 20 IT 30 SALES
일반 서브쿼리
전체 사원 평균 급여보다 많이 받는 사원을 찾으려는 경우
SELECT name, sal
FROM emp
WHERE sal > (
SELECT AVG(sal) FROM emp
);
SELECT AVG(sal) FROM emp
는 단 한 번 실행되어 평균 급여를 반환한다.- 그 값을 기준으로
sal > 평균
조건을 필터링한다.
결과
name | sal |
Bob | 4000 |
Dave | 3500 |
상호 연관 서브쿼리
자신의 부서 평균 급여보다 많이 받는 사원을 찾으려는 경우
SELECT name, sal
FROM emp e
WHERE sal > (
SELECT AVG(sal)
FROM emp
WHERE dept_id = e.dept_id
);
e.dept_id
는 외부 쿼리의 값을 서브쿼리에서 사용한다.- 각 사원의 부서별 평균을 행마다 다시 계산한다.
결과
name | sal |
Bob | 4000 |
Dave | 3500 |
위 예시를 보면 일반 서브쿼리는 독립적으로 한 번 실행하고, 상호 연관 서브쿼리는 외부 쿼리의 각 행마다 실행되는것을 확인할 수 있다.
728x90
'DB' 카테고리의 다른 글
[DB] SQL - 데이터베이스에서의 CRUD (0) | 2025.04.03 |
---|---|
[DB] SQL - CREATE TABLE과 함께 쓰는 제약 조건이란? (0) | 2025.04.03 |
[DB] SQL - 서브 쿼리를 이용한 동적 쿼리 활용 방법 (0) | 2025.04.02 |
[DB] SQL - 단일 행, 다중 행, 다중 열 서브쿼리 개념 정리 (0) | 2025.04.01 |
[DB] SQL - 서브쿼리 개념 정리 (0) | 2025.04.01 |