처음 SQL 배울 때 진짜 유용한데 진짜 잘 못 쓰던 subquery에 대해서 정리해보려 한다.

CTE처럼 (이전 글 참고) 새로운 테이블을 만지는 것이 아닌, 작성 중인 쿼리 내에 주석을 붙이듯 쿼리를 작성하는 방법이다. 데이터가 클 떄에는 서브 쿼리가 CTE보다 조금 더 빠르다고 한다.


1. Subquery 란?

하나의 SQL 쿼리 안에 작성 된 또 다른 SQL 쿼리 입니다. '부속 질의'라고 부르기도 합니다.

 

2. Subquery를 사용할 수 있는 위치

SELECT 절 (스칼라 부속 질의)

FROM 절 (인라인 뷰)

WHERE 절

HAVING 절

ORDER BY 절

INSERT문의 VALUES 절

UPDATE문의 SET절 

 

3. WHERE 절 부속질의

3-1. 비교 (단일 행 서브쿼리)

서브 쿼리의 결과 건수가 반드시 1개 이하 (2개 이상일 경우 Error)

3-2. 집합, 한정, 존재 (다중 행 서브 쿼리)

 다중 행 연산자  설명
 IN  서브쿼리의 결과에 존재하는 임의의 값과 동일한 조건을 의미한다.
 ALL  서브쿼리의 결과에 존재하는 모든 값을 만족하는 조건을 의미한다.
 ANY  서브쿼리의 결과에 존재하는 어느 하나의 값이라도 만족하는 조건을 의미한다.
 EXISTS  서브쿼리의 결과를 만족하는 값이 존재하는지 여부를 확인하는 조건을 의미한다.

 

 

참고: https://mozi.tistory.com/233

 

[DATABASE] 서브쿼리란? 서브쿼리 사용해보기

서브쿼리란? 하나의 SQL 문에 포함되어 있는 또 다른 SQL 문을 말합니다. 서브쿼리 사용시 주의사항 1. 서브쿼리를 괄호로 감싸서 사용한다. 2. 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함

mozi.tistory.com

 

+ Recent posts