Share via


비교 연산자로 시작하는 하위 쿼리

하위 쿼리는 비교 연산자(=, < >, >, > =, <, ! >, ! <, 또는 < =) 중 하나로 시작할 수 있습니다.

수정되지 않은 비교 연산자(ANY 또는 ALL이 나오지 않는 비교 연산자)로 시작하는 하위 쿼리는 IN으로 시작하는 하위 쿼리처럼 값 목록이 아닌 단일 값을 반환해야 합니다. 이러한 하위 쿼리가 둘 이상의 값을 반환하면 Microsoft SQL Server 2005 는 오류 메시지를 표시합니다.

수정되지 않은 비교 연산자로 시작하는 하위 쿼리를 사용하려면 하위 쿼리가 정확히 하나의 값만 반환한다는 것을 알 수 있도록 데이터와 문제의 특성을 충분히 이해해야 합니다.

예를 들어 각 영업 사원이 하나의 판매 지역만 담당한다고 가정하고 Linda Mitchell이라는 사원이 담당하는 지역에 있는 고객을 찾을 경우 간단하게 '=' 비교 연산자로 시작하는 하위 쿼리로 문을 작성할 수 있습니다.

USE AdventureWorks;
GO
SELECT CustomerID
FROM Sales.Customer
WHERE TerritoryID =
    (SELECT TerritoryID
     FROM Sales.SalesPerson
     WHERE SalesPersonID = 276)

그러나 Linda Mitchell이 두 개 이상의 판매 지역을 담당할 경우 오류 메시지가 나타납니다. 이런 경우 '=' 비교 연산자 대신 IN 구문(또는 = ANY)을 사용할 수 있습니다.

수정되지 않은 비교 연산자로 시작하는 하위 쿼리는 단일 값을 반환하므로 집계 함수가 포함되는 경우가 많습니다. 예를 들어 다음 문은 제품 가격이 평균 가격보다 비싼 모든 제품의 이름을 찾습니다.

Use AdventureWorks
SELECT Name
FROM Production.Product
WHERE ListPrice >
    (SELECT AVG (ListPrice)
     FROM Production.Product)

수정되지 않은 비교 연산자로 시작하는 하위 쿼리는 단일 값을 반환해야 하므로 GROUP BY 또는 HAVING 절이 단일 값을 반환하지 않으면 하위 쿼리에 GROUP BY나 HAVING 절을 포함할 수 없습니다. 예를 들어 다음 쿼리에서는 하위 범주 14에 있는 가격이 가장 저렴한 제품보다 가격이 높은 제품을 찾습니다.

Use AdventureWorks
SELECT Name
FROM Production.Product
WHERE ListPrice >
    (SELECT MIN (ListPrice)
     FROM Production.Product
     GROUP BY ProductSubcategoryID
     HAVING ProductSubcategoryID = 14)

참고 항목

개념

하위 쿼리 유형

도움말 및 정보

SQL Server 2005 지원 받기