[MSSQL] 서브쿼리(SubQuery) 사용법 & 예제
- DB/MSSQL
- 2018. 2. 19.
서브 쿼리란?
하나의 쿼리문 안에 포함되어 있는 또 하나의 쿼리문을 말합니다.
서브 쿼리는 메인 쿼리가 서브 쿼리를 포함하는 종속적인 관계입니다.
여러 번의 쿼리를 수행해야만 얻을 수 있는 결과를
하나의 중첩된 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의 종류 설명 및 사용법 & 예제
'DB > MSSQL' 카테고리의 다른 글
[MSSQL] 피벗 테이블을 활용하여 세로로 된 데이터 가로로 출력하기 (0) | 2018.03.22 |
---|---|
[MSSQL] 프로시저 생성,조회,수정,삭제 (5) | 2018.02.19 |
[MSSQL] Union,UnionAll 사용법 & 예제 (2) | 2018.02.13 |
[MSSQL] JOIN의 종류설명 및 사용법 & 예제 (6) | 2018.02.12 |