SQL에서 서브쿼리에서 레코드의 존재 여부를 테스트하는 방법은 무엇인가요?


서브쿼리에서 레코드의 존재 여부를 테스트하려면 EXISTS 연산자를 사용할 수 있습니다. EXISTS 연산자는 서브쿼리에서 반환된 결과 집합에 레코드가 하나 이상 있는 경우 TRUE를 반환하고, 그렇지 않은 경우 FALSE를 반환합니다.

예를 들어, customers 테이블에서 주문을 한 고객의 수를 반환하는 쿼리를 작성하려고 한다고 가정해 봅시다. 이를 위해 orders 테이블에서 customers 테이블과 조인하여 고객 ID를 가져오는 서브쿼리를 작성할 수 있습니다. 그런 다음 EXISTS 연산자를 사용하여 서브쿼리에서 반환된 결과 집합에 레코드가 있는지 확인할 수 있습니다.

다음은 이 예제를 보여주는 SQL 쿼리입니다.

SELECT COUNT(*) AS num_customers_with_orders
FROM customers c
WHERE EXISTS (
  SELECT 1
  FROM orders o
  WHERE o.customer_id = c.customer_id
);

이 쿼리는 customers 테이블에서 주문을 한 고객의 수를 반환합니다. EXISTS 연산자는 orders 테이블에서 해당 고객 ID와 일치하는 레코드가 있는지 확인하고, 결과가 TRUE인 경우 해당 고객을 반환합니다. 이를 통해 주문을 한 고객의 수를 계산할 수 있습니다.



About the author

William Pham is the Admin and primary author of Howto-Code.com. With over 10 years of experience in programming. William Pham is fluent in several programming languages, including Python, PHP, JavaScript, Java, C++.