앞에 살펴본 서브쿼리는 WHERE절에서 조건식 대상으로 사용했다.
하지만 FROM절에도 서브쿼리를 사용할 수 있다.
FROM절에 사용하는 서브쿼리는 인라인 뷰(INLINE VIEW)라고도 부른다.
인라인뷰는 특정 테이블 전체 데이터가 아닌 SELECT문을 통해 일부 데이터를 먼저 추출해 온 후 별칭을 주어서 사용한다.
FROM절에 직접 테이블을 명시하여 사용하기에는 테이블 내 데이터 규모가 너무 크거나, 현재 작업에 불필요한 열이 너무 많아 일부 행과 열만 사용하고자 할 때 유용하다.
FROM절에 너무 많은 서브쿼리를 지정하면 가독성이나 성능이 떨어질 수 있기 때문에
경우에 따라 WITH절을 사용한다.
WITH
[별칭1] AS (SELECT문 1),
[별칭2] AS (SELECT문 2), ...
[별칭n] AS (SELECT문 n)
SELECT
FROM 별칭1,별칭2, ... , 별칭n
WITH절은 서브쿼리를 FROM절에 직접 명시하는 방식보다 번거로울 수도 있지만, 여러개의 서브쿼리가 규모가 엄청나게 커질 경우, 실제 수행해야 하는 메인쿼리와 서브쿼리를 분류할 때 유용하게 사용할 수 있다.
상호연관 서브쿼리
메인쿼리에 사용한 데이터를 서브쿼리에서 사용하고 서브쿼리의 결과 값을 다시 메인쿼리로 돌려주는 방식인 상호연관 서브쿼리(CORRELATED SUBQUERY)도 존재한다. 다만 성능을 떨어뜨리는 원인이 될 수 있고, 사용빈도가 높지는 않다.
SELECT * FROM EMP
WHERE SAL >
(SELECT MIN(SAL) FROM EMP E2 WHERE E2.DEPTNO = E1.DEPTNO)
ORDER BY DEPTNO, SAL;
'DATABASE > SubQuery : SQL안에 또 다른 SQL' 카테고리의 다른 글
04. 다중열 서브쿼리 : 비교할 열이 여러 개일 때 (0) | 2024.03.12 |
---|---|
03.다중행 서브쿼리 : 실행 결과가 여러개 (0) | 2024.03.12 |
02. 단일행 서브쿼리 : 실행 결과가 하나 (0) | 2024.03.12 |
01.서브쿼리 (0) | 2024.03.12 |