[MSSQL] 서브쿼리(SubQuery) 사용법 & 예제

서브 쿼리란? 

하나의 쿼리문 안에 포함되어 있는 또 하나의 쿼리문을 말합니다.

서브 쿼리는 메인 쿼리가 서브 쿼리를 포함하는 종속적인 관계입니다.

여러 번의 쿼리를 수행해야만 얻을 수 있는 결과를 

하나의 중첩된 SQL 문장으로 간편하게 결과를 얻을 수 있게 해 줍니다.

쉽게 말해서 쿼리 문안에 쿼리문을 또 쓴다고 생각하면 됩니다.

※ Sub Query를 Inner Query라고도 합니다.

 

주의사항

☞ 서브 쿼리를 괄호로 묶어서 사용해야 한다.

☞ 서브 쿼리 안에서 Order By 절은 사용할 수 없다.

☞ 연산자 오른쪽에 사용하여야 한다.

 

서브 쿼리의 반환값에 따른 서브쿼리

☞ 단일 행 서브쿼리 : 서브쿼리의 결과가 1행

☞ 다중 행 서브쿼리 : 서브쿼리의 결과가 여러 행

☞ 다중 칼럼 서브 쿼리 : 서브쿼리의 결과가 여러 컬럼

 

사용 예제 

1. Select에서의 서브쿼리 (스칼라 서브 쿼리)

SELECT절에서 서브 쿼리를 쓸 경우에 서브 쿼리의 결괏값은 하나만 출력되어야 합니다.

SELECT
CD_PLANT,
NM_PLANT,
(SELECT AVG(UM) FROM TABLE_ITEM) AS UM
FROM TABLE_PLANT

 

2. From에서의 서브 쿼리 (인라인 뷰)

From에는 테이블 명이 와야 하지만 From에 테이블 대신에 서브 쿼리를 사용하면 서브 쿼리에서 조회된 값을 테이블 처럼 활용할 수 있습니다.

SELECT
CD_PLANT,
NM_PLANT,
AM
FROM
(SELECT * FROM  TABLE_PLANT)A

 

3. Where에서의 서브쿼리

Select
CD_PLANT
FROM TABLE_PLANT
WHERE CD_PLANT IN(
                  SELECT 
                  CD_PLANT 
                  FROM  
                  TABLE_PLANT 
                  WHERE PLANT ='1000' AND COMPANY = '0327'
                 )

 

이밖에도 HAVING, ORDER BY, INSERT문의 VALUE, UPDATE문의 SET, 집계 함수 등 다양한 곳에서 사용 가능하며 서브 쿼리안에 서브쿼리 이런 식으로 어러 개의 서브 쿼리를 중첩해서도 사용 가능합니다.

 

[MSSQL] SET NOCOUNT 정의와 사용법 (프로시저 성능 향상)

[MSSQL] Union, UnionAll 사용법 & 예제

[MSSQL] JOIN의 종류 설명 및 사용법 & 예제

[MSSQL] 집계 함수(COUNT, AVG, MAX, MIN, SUM) 사용법 & 예제

[MSSQL] GROUP BY, HAVING, DISTINCT절 사용하기

 

댓글

Designed by JB FACTORY