본문으로 건너뛰기
실습하기

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;

결과

namecourse_count
Sofia2
Ethan1
Aisha2
Noah1
Liam3

외부 쿼리는 users 테이블을 순회하고, 내부 서브쿼리는 user_courses 테이블에서 각 사용자별 수강 코스 개수를 계산합니다.


언제 사용할까

  • 추가 계산된 컬럼을 결과에 동적으로 붙이고 싶을 때
  • 복잡한 Join 없이 빠르게 요약 지표를 만들 때
  • 단일 조회 값을 가져와 리포트에 활용할 때

참고 사항

  • 서브쿼리는 반드시 값 하나만 반환해야 합니다. (그렇지 않으면 오류 발생)
  • 대용량 데이터셋에서는 반복 실행으로 성능 저하가 생길 수 있습니다. → JOIN + GROUP BY 방식이 더 효율적인 경우가 많습니다.
  • COUNT, SUM, AVG 등 다양한 집계 함수와 함께 활용 가능하며, 서브쿼리 안에 또 다른 서브쿼리를 중첩하는 것도 가능합니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!