SELECT 절의 서브쿼리
SELECT
절에서 서브쿼리를 사용하면 각 행에 대해 계산된 값을 동적으로 추가할 수 있습니다.
예를 들어, 합계, 개수, 특정 조건에 따른 조회 값을 컬럼처럼 붙일 수 있습니다.
서브쿼리는 외부 쿼리의 각 행마다 한 번씩 실행되며, 단일 값(스칼라 값)
만 반환해야 합니다.
문법
SELECT 절의 서브쿼리
SELECT column1,
(SELECT some_value FROM another_table WHERE ...) AS new_column
FROM main_table;
- 외부 쿼리: 메인 테이블에서 기본 컬럼을 조회
- 내부 서브쿼리: 관련된 데이터를 계산하거나 집계한 값을 반환
AS
: 새 컬럼 이름을 지정
예시: 사용자별 수강한 코스 개수
아래 쿼리는 각 사용자가 선택한 코스 수를 계산해 결과에 포함합니다.
SELECT 절의 서브쿼리 예시
SELECT
u.name,
(
SELECT COUNT(*)
FROM user_courses uc
WHERE uc.user_id = u.user_id
) AS course_count
FROM users u;
결과
name | course_count |
---|---|
Sofia | 2 |
Ethan | 1 |
Aisha | 2 |
Noah | 1 |
Liam | 3 |
외부 쿼리는 users
테이블을 순회하고, 내부 서브쿼리는 user_courses
테이블에서 각 사용자별 수강 코스 개수를 계산합니다.
언제 사용할 까
- 추가 계산된 컬럼을 결과에 동적으로 붙이고 싶을 때
- 복잡한 Join 없이 빠르게 요약 지표를 만들 때
- 단일 조회 값을 가져와 리포트에 활용할 때
참고 사항
- 서브쿼리는 반드시 값 하나만 반환해야 합니다. (그렇지 않으면 오류 발생)
- 대용량 데이터셋에서는 반복 실행으로 성능 저하가 생길 수 있습니다. → JOIN + GROUP BY 방식이 더 효율적인 경우가 많습니다.
COUNT
,SUM
,AVG
등 다양한 집계 함수와 함께 활용 가능하며, 서브쿼리 안에 또 다른 서브쿼리를 중첩하는 것도 가능합니다.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!