본문 바로가기
Big Data/Database

EXISTS, ANY, ALL

by Wikinist 2023. 7. 26.

EXISTSANY, 그리고 ALL은 모두 상관 서브쿼리(중첩된 서브쿼리)에서 사용할 수 있는 비교 연산자입니다. 상관 서브쿼리는 외부 쿼리와 연관되어 서브쿼리를 실행하는 방식으로, 주로 부정형 서브쿼리와 함께 사용됩니다. 각각의 연산자에 대해 설명하겠습니다:

EXISTS

EXISTS 연산자는 상관 서브쿼리에서 사용되며, 서브쿼리의 결과가 존재하는지 여부를 확인합니다. EXISTS는 서브쿼리의 결과가 한 개 이상 있을 때 TRUE를 반환하고, 결과가 없으면 FALSE를 반환합니다.
예를 들어, 다음 쿼리는 orders 테이블에 주문이 존재하는지 확인하는 예시입니다.

SELECT *
FROM customers
WHERE EXISTS (
    SELECT 1
    FROM orders
    WHERE orders.customer_id = customers.customer_id
);

ANY

ANY 연산자는 외부 쿼리의 비교 연산자와 함께 사용하여 한 개 이상의 결과와 비교합니다. 즉, 외부 쿼리와 서브쿼리의 결과 중 하나라도 만족하면 TRUE를 반환합니다.
예를 들어, 다음 쿼리는 products 테이블에서 가격이 어떤 서브쿼리의 결과와 같거나 비교 연산자와 만족하는 제품을 조회하는 예시입니다.

SELECT *
FROM products
WHERE unit_price = ANY (
    SELECT unit_price
    FROM special_prices
);

ALL

ALL 연산자는 외부 쿼리의 비교 연산자와 함께 사용하여 모든 결과와 비교합니다. 즉, 외부 쿼리와 서브쿼리의 모든 결과가 비교 연산자와 만족하면 TRUE를 반환합니다.
예를 들어, 다음 쿼리는 products 테이블에서 가격이 모든 서브쿼리의 결과와 같거나 비교 연산자와 만족하는 제품을 조회하는 예시입니다.

SELECT *
FROM products
WHERE unit_price = ALL (
    SELECT unit_price
    FROM standard_prices
);

요약하면, EXISTS, ANY, 그리고 ALL은 모두 상관 서브쿼리에서 사용 가능하며, 각각 다른 조건을 만족하는지 여부를 판단하는데 사용됩니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.

'Big Data > Database' 카테고리의 다른 글

날짜 관련 함수  (0) 2023.07.26
GROUP BY 사용 시 제한  (0) 2023.07.26
Long format / Wide format  (0) 2023.07.26
DATA_ADD 함수  (0) 2023.07.26
공통 테이블 표현식(CTE)  (0) 2023.07.26