[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)


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절 사용하기


댓글(0)

Designed by JB FACTORY