Udostępnij za pośrednictwem


Podkwerendy z operatorów porównania

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

podzapytanie wprowadzone z porównania niezmodyfikowany operatora (operator porównania nie następuje według dowolnego lub wszystkich) musi zwrócić pojedynczą wartość zamiast listy wartości, takich jak podkwerend wprowadzonych z caliJeśli takie podzapytanie zwraca więcej niż jedną wartość, SQL Server wyświetla komunikat o błędzie.

Aby użyć podzapytanie wprowadzone z operator porównania niezmieniona, należy zapoznać wystarczająco z danych i rodzaj problemu wiedzieć, że podzapytanie zwróci wartość dokładnie jeden.

Na przykład, jeśli przyjąć każdy sprzedawca obejmuje tylko jeden obszar sprzedaży, a chcesz znaleźć klientów zlokalizowanych na terytorium objętym Karolina Sałas-Szlejter, można napisać instrukcja z podzapytanie wprowadzone z uproszczonych = operator porównania.

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

Jeśli jednak Karolina Sałas-Szlejter objęte więcej niż jednego obszaru sprzedaży, mogłoby spowodować komunikat o błędzie.Zamiast = operator porównania, mogą być używane w składzie (= dowolnego działa).

Podkwerend wprowadzonych z operatorów porównania niezmodyfikowany często zawierają wartość zagregowana funkcji, ponieważ te zwraca pojedynczą wartość.Na przykład następująca instrukcja znajduje nazwy wszystkich produktów, których cena jest większa niż średnia cena rynkowa.

Use AdventureWorks2008R2;
GO
SELECT Name
FROM Production.Product
WHERE ListPrice >
    (SELECT AVG (ListPrice)
     FROM Production.Product)

Ponieważ podkwerend wprowadzonych z operatorów porównania niezmodyfikowany musi zwracać wartość pojedynczego, nie mogą zawierać Grupuj według lub POSIADAJĄCE klauzul znając 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ż w podkategorii 14 produkt o najniższej cenie.

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

Zobacz także

Koncepcje