반응형
내용을 더욱 알차고 이해하기 쉽게 재구성하였습니다.
이해하기 쉽게 새로 작성한 New 서브쿼리 가이드 보러가기
> 초보 개발자도 쉽게 이해하는 서브쿼리 완전 정복 가이드
해당 결과 조회는 SSMS(MSSQL)에서 확인하였습니다.
또한, top 1은 MS-SQL에서 사용하는 한 행에 대한 데이터 출력 조회 명령어로 MySQL에서는 limit를 사용하여야 합니다.
서브쿼리란? (Subquery)
- 다른 테이블의 값을 기준으로 한 테이블에서 데이터를 검색할 수 있도록 다른 쿼리 내부에 중첩된 쿼리
- 즉, 다른 쿼리 내부에 포함되어 있는 SELECT문을 의미
- 괄호 안에 포함되어 있으며 일반적으로 더 큰 쿼리의 일부로 사용
- 서브쿼리를 포함하고 있는 쿼리를 외부쿼리(outer query)라고 부름
- 서브쿼리는 내부쿼리(inner query)라고도 부름
- 외부 쿼리에 지정된 조건 또는 기준에 따라 하나 이상의 테이블에서 데이터를 검색
- 데이터 필터링, 정렬, 또는 그룹화와 같은 다양한 방법으로 사용
서브쿼리 사용의 이점
- 파생 테이블로 사용하여 더 큰 쿼리에서 다른 테이블과 조인
- 집계 함수를 계산하거나 데이터의 하위 집합에 대한 다른 계산 수행
- 연관된 서브쿼리에서 서브쿼리를 사용하여 두 테이블의 데이터를 행렬로 비교
- 외부 쿼리에서 직접 액세스 할 수 없는 테이블에서 데이터를 검색
서브쿼리의 특징
- 쿼리의 SELECT, FROM, WHERE, HAVING 및 JOIN절에서 사용
- 단일 값 또는 값 집합 반환
- =, <, >, IN, NOT IN, EXIST, NOT EXIST 등 다양한 비교 연산자와 함께 사용 가능
- 조인, 집계 함수 및 GROUP BY절을 포함한 모든 유효한 SELECT문을 사용하여 작성 가능
서브쿼리 사용 방법
SELECT 절
- 특정 단일 값이 필요할 때 사용
- 다중 값을 결과 셋에 표현할 경우, 에러 출력
- Error : 하위 쿼리에서 값을 둘 이상 반환했습니다.
select
username, (select top 1 username from testTable)
from
testTable
FROM 절
select
a.*
from
(
select username from testTable where username like '%e%'
) as a
WHERE 절
- 특정 단일 값이 필요할 때 사용
- 다중 값을 결과 셋에 표현할 경우, 에러 출력
- Error : 하위 쿼리에서 값을 둘 이상 반환했습니다.
select
username
from
testTable
where
username =
(
select top 1 username from testTable where username like '%e%'
)
- 다중 값이 필요할 경우 in 이용
select
username
from
testTable
where
username in
(
select username from testTable where username like '%e%'
)
서브쿼리를 이용한 테이블 JOIN
- 테이블에 조건을 걸어 조인 가능
select
a.username
from
testTable as a
inner join
(
select
id, username
from
testTable
where
username = 'eunbyeol'
) as b
on a.id = b.id
참고
반응형