Karşılaştırma işleçleri, ANY, SOME veya ALL tarafından değiştirildi.
Alt sorgu tanıtmaktadır karşılaştırma işleçleri ALL veya ANY anahtar sözcükler ' değiştirilebilir.SOME olan ANY için eşdeğer bir ISO standardıdır.
Değiştirilmiş karşılaştırma işleç ile sunulan alt sorgular, sıfır veya daha fazla değer listesini döndürür ve GROUP BY veya HAVING yan tümcesini ekleyebilirsiniz.Bu alt sorgu ile EXISTS restated.
Kullanarak > Karşılaştırma işleç, örnek olarak >Her değerinden daha büyük TÜM demektir. Diğer bir deyişle, en büyük değerden daha büyük anlamına gelir.Örneğin, >3) ALL (1, 2, yöntem 3 ' daha büyük. >En az bir değer, diğer bir deyişle, en daha büyük ANY demektir.Bu nedenle >3) ANY (1, 2, yöntem 1'den büyük.
Alt sorgu bir satır için >Dış bir sorguda, alt sorgu alt sorgu tarafından döndürülen değerleri listesinde her bir değerden büyük olmalıdır tanıtma sütun içindeki değer belirtilen koşula karşılamak için ALL.
Benzer şekilde, >Koşul karşılamak bir satır için alt sorgu tanıtan sütunundaki değeri en az bir alt sorgu tarafından döndürülen değer listesindeki değerlerin daha büyük olmalıdır dış bir sorguda belirtilen ANY belirtir.
Aşağıdaki sorgu ANY tarafından değiştirilen bir karşılaştırma işlecini içinde bir alt sorgu örneği sağlar.Bu, büyük veya buna eşit en büyük liste fiyatını herhangi bir ürünü alt kategorisi, liste fiyatlarını ürünler bulur.
USE AdventureWorks;
GO
SELECT Name
FROM Production.Product
WHERE ListPrice >= ANY
(SELECT MAX (ListPrice)
FROM Production.Product
GROUP BY ProductSubcategoryID)
Iç sorgunun, her ürün alt kategorisi için en büyük liste fiyatı bulur.Dış sorgu, bu değerlerin hiç arar ve hangi ürün ait liste fiyatı değerinden büyük veya buna eşit en büyük liste fiyatını alt her ürün kategorisi ait olduğunu belirler.Sorgu, ANY değiştirildi, ALL için liste fiyatı sıfırdan büyük veya eşit iç sorgudan döndürülen olan tüm liste fiyatlarını ürünler döndürecektir.
Alt sorgunun herhangi bir değer döndürmez, tüm değerler döndürmek tüm alt sorgu başarısız olur.
ANY = işleç için IN. eşdeğerdirÖrneğin, tekerleği ürünlerin, bulma Adventure Works Cycles yapar, her iki IN kullanabilirsiniz veya ANY =.
--Using =ANY
USE AdventureWorks;
GO
SELECT Name
FROM Production.Product
WHERE ProductSubcategoryID =ANY
(SELECT ProductSubcategoryID
FROM Production.ProductSubcategory
WHERE Name = 'Wheels')
--Using IN
USE AdventureWorks;
GO
SELECT Name
FROM Production.Product
WHERE ProductSubcategoryID IN
(SELECT ProductSubcategoryID
FROM Production.ProductSubcategory
WHERE Name = 'Wheels')
Işte sonucu küme ya da bir sorgu için:
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: < >HERHANGI bir yol değil = a = b veya c =.NOT anlamına gelir değil = a = b ve c =.<>ALL gösterir NOT IN. aynı
Örneğin, aşağıdaki sorgu satış tüm kişiler tarafından kapsanmayan bölge bulunan müşteriler bulur.
Use AdventureWorks;
GO
SELECT CustomerID
FROM Sales.Customer
WHERE TerritoryID <> ANY
(SELECT TerritoryID
FROM Sales.SalesPerson)
sonuçlar, satışçı tarafından üzeri bir müşteriye atanan her bölge için satış bölgeleri NULL, olduklarından dışında tüm müşteriler'i içerir.Iç sorgunun satış kişiler tarafından kapsanan tüm satış bölgeleri bulur ve daha sonra her bölge için dış sorgu birinde olmayan müşterileri bulur.
Bu sorguda NOT IN kullandığınızda, aynı nedeni, sonuçlar müşterilerin hiçbiri içerir.
You can get the same results with the < >ALL operator, which is equivalent to NOT IN.
See Also