언어 매뉴얼 - 서브쿼리

언어 매뉴얼 - 서브쿼리 (Language Manual - Subqueries)

서브쿼리(Subquery)는 쿼리 안에 중첩된 또 하나의 SELECT 문이에요. Hive에서는 WHERE, FROM, HAVING 절 등에서 서브쿼리를 활용할 수 있습니다.

출처: 문서

본문

Hive에서 서브쿼리를 사용하는 방법을 설명합니다.

서브쿼리의 종류

  • WHERE 절의 서브쿼리: IN, NOT IN, EXISTS, NOT EXISTS, 비교 연산자와 함께 사용합니다.
  • FROM 절의 서브쿼리: 서브쿼리를 하나의 테이블처럼 취급하여 조회합니다. 괄호로 감싼 SELECT를 FROM 뒤에 두고 별칭을 붙입니다.
  • HAVING 절의 서브쿼리: 그룹 조건에 서브쿼리를 사용합니다.

예시

IN을 사용한 예:

SELECT name, salary FROM employees
WHERE dept_id IN (SELECT dept_id FROM departments WHERE location = 'Seoul');

EXISTS를 사용한 예:

SELECT name FROM employees e
WHERE EXISTS (SELECT 1 FROM orders o WHERE o.emp_id = e.id);

FROM 절 서브쿼리 예:

SELECT sub.name FROM
  (SELECT name FROM employees WHERE salary > 5000) sub;

서브쿼리 규칙

  • 서브쿼리의 결과가 여러 행·여러 컬럼일 때는 연산자에 따라 적절한 형태로 사용해야 합니다.
  • 괄호로 서브쿼리를 감싸는 것이 기본 규칙이며, 컬럼 이름 충돌을 피하기 위해 별칭을 사용하는 습관이 좋습니다.

참고: 각 구문의 예외와 제약(예: IN 서브쿼리의 NULL 처리, 비상관·상관 서브쿼리의 차이)은 원문 문서를 참고하세요.

더 알아보기 (Learn more)

  • 서브쿼리는 조인(JOIN)으로 대체할 수 있는 경우가 많아요. 실행 계획을 보면서 어느 쪽이 더 효율적인지 비교해 보세요.