Udostępnij za pośrednictwem


Zmodyfikowany przez dowolny, niektóre lub wszystkie operatory porównania

Operatory porównania wprowadzenie podzapytanie mogą być modyfikowane przez kluczowe wszystkie lub niektóre.Niektóre są równoważne dla dowolnej normy ISO.

Podkwerend wprowadzonych z operator porównania zmodyfikowanego powrócić do listy wartości zero lub więcej i może zawierać klauzulę GROUP BY lub HAVING klauzula.Te podkwerend można przekształcić z EXISTS.

Za pomocą > operator porównania, na przykład, >Wszystkie oznacza większą niż każdej wartości.Innymi słowy oznacza większą niż wartość maksymalna.Na przykład >Wszystkie (1, 2, 3) oznacza większe niż 3.>WSZELKICH środków jest większa niż co najmniej jedną wartość, oznacza to, że większa od wartości minimalnej.Tak >ANY (1, 2, 3) oznacza większą niż 1.

Dla wiersza w podkwerendzie z >Wszystkie spełniający warunek określony w zewnętrznej kwerendy wartość kolumna wprowadzające podzapytanie musi być większa niż każdej wartości na liście wartości zwróconych przez podkwerendę.

Podobnie >jakichkolwiek środków dla wiersza spełniający warunki określone w kwerendzie zewnętrzne wartość kolumna, która wprowadza podzapytanie musi być większa niż co najmniej jedną z wartości na liście wartości zwróconych przez podkwerendę.

Następująca kwerenda zawiera przykład podzapytanie wprowadzone z zmodyfikowany przez dowolny operator porównania.Znalezione produktów, których ceny są większe niż lub równe maksymalnej ceny listy podkategorii dowolnego produktu.

USE AdventureWorks2008R2;
GO
SELECT Name
FROM Production.Product
WHERE ListPrice >= ANY
    (SELECT MAX (ListPrice)
     FROM Production.Product
     GROUP BY ProductSubcategoryID) ;

Dla każdej podkategorii produktu wewnętrzną kwerendą wyszukuje maksymalna cena katalogowa.Kwerenda zewnętrznego przegląda wszystkie te wartości i określa, który z produkt listy ceny są większe niż lub równe maksymalnej ceny listy podkategorii dowolnego produktu.Jeśli DOWOLNE została zmieniona na wszystkie, kwerenda będzie zwracać tylko te produkty, których cena jest większa lub równa ceny listy zwrócone w kwerendzie wewnętrzne.

podzapytanie nie zwraca żadnych wartości, cała kwerenda zawiedzie, jeżeli do zwracania wartości.

= DOWOLNY operator jest równoważny caliNa przykład, aby znaleźć nazwy produktów koło Adventure Works Cycles tworzy, można użyć albo w lub = ANY.

--Using =ANY
USE AdventureWorks2008R2;
GO
SELECT Name
FROM Production.Product
WHERE ProductSubcategoryID =ANY
    (SELECT ProductSubcategoryID
     FROM Production.ProductSubcategory
     WHERE Name = 'Wheels') ;

--Using IN
USE AdventureWorks2008R2;
GO
SELECT Name
FROM Production.Product
WHERE ProductSubcategoryID IN
    (SELECT ProductSubcategoryID
     FROM Production.ProductSubcategory
     WHERE Name = 'Wheels') ;

Oto zestaw wyników dla dowolnej kwerendy:

Name
--------------------------------------------------
LL Mountain Front Wheel
ML Mountain Front Wheel
HL Mountain Front Wheel
LL Road Front Wheel
ML Road Front Wheel
HL Road Front Wheel
Touring Front Wheel
LL Mountain Rear Wheel
ML Mountain Rear Wheel
HL Mountain Rear Wheel
LL Road Rear Wheel
ML Road Rear Wheel
HL Road Rear Wheel
Touring Rear Wheel

(14 row(s) affected)

The < >ANY operator, however, differs from NOT IN: < >WSZELKIE środki = nie, nie = b lub nie = c.NIE oznacza nie =, nie = b i nie = c.<>WSZYSTKIE oznacza taki sam, jak nie cali

Na przykład następująca kwerenda powoduje znalezienie klientów zlokalizowanych na terytorium nieobjętych osób sprzedaży.

Use AdventureWorks2008R2;
GO
SELECT CustomerID
FROM Sales.Customer
WHERE TerritoryID <> ANY
    (SELECT TerritoryID
     FROM Sales.SalesPerson) ;

Wyniki obejmują wszystkich odbiorców, z wyjątkiem tych, których terytoria sprzedaży ma wartość NULL, ponieważ każde terytorium, przypisany do nabywcy jest objęte sprzedawca.Wewnętrzną kwerendą znajdzie sprzedaży terytoriów objętych sprzedawców, a następnie, dla każdego obszaru kwerendy zewnętrzne znalezienie klientów, którzy nie są w jednym.

Z tego samego powodu przy użyciu NOT IN w tej kwerendzie wyniki obejmują Brak odbiorców.

You can get the same results with the < >ALL operator, which is equivalent to NOT IN.