Udostępnij za pośrednictwem


Subqueries with Comparison Operators

Subqueries can be introduced with one of the comparison operators (=, < >, >, > =, <, !>, !<, or < =).

Podkwerenda wprowadzonych w systemie zostały zmodyfikowane porównania operatora (operator porównania nie następuje ANY lub ALL) musi zwracać pojedynczej wartości, a nie listę wartości, takie jak podkwerend wprowadzonych w systemie IN.If such a subquery returns more than one value, Microsoft SQL Server displays an error message.

Aby użyć podkwerendy wprowadzonych w systemie operator porównania zostały zmodyfikowane, użytkownik musi być wystarczająco znanych z danych i rodzaj problemu wiedzieć, czy podkwerenda zwraca dokładnie jednej wartości.

Na przykład jeśli założono każdy sprzedawca tylko obejmuje jeden obszar sprzedaży i chcesz wyszukać klientów znajdujących się na terytorium objętych Mitchell Anna, można napisać instrukcja z podkwerenda wprowadzonych w systemie proste = operator porównania.

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

Jeśli jednak Mitchell Anna obejmuje więcej niż jeden obszar sprzedaży, mogłaby spowodować komunikat o błędzie.Zamiast = porównania operator, formułowania IN może być używany ()= ANY działa).

Podkwerend wprowadzone z operatorów porównania zostały zmodyfikowane często zawierają funkcje agregujące, ponieważ te zwraca jedną wartość.Na przykład następująca instrukcja znajduje nazwy wszystkich produktów, których cena katalogowa jest większa niż średnia cena katalogowa.

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

Ponieważ podkwerend wprowadzonych w systemie operatory porównania zostały zmodyfikowane musi zwracać wartość jeden, nie mogą one zawierać GROUP BY lub klauzul HAVING, jeśli nie znasz klauzula GROUP BY lub HAVING sam zwraca jedną wartość.Na przykład następująca kwerenda powoduje znalezienie produktów, o cenie wyższej niż najniższa cena produktu, który znajduje się w podkategorii 14.

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

See Also

Concepts