언어 매뉴얼 - 서브쿼리
언어 매뉴얼 - 서브쿼리 (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)으로 대체할 수 있는 경우가 많아요. 실행 계획을 보면서 어느 쪽이 더 효율적인지 비교해 보세요.