ANY ve ALL SQL ifadeleri, bir sütunun değeri ile diğer değerler aralığı arasında karşılaştırmalar yapmanızı sağlar.
Operatör ANY:
ANY, aralıktaki değerlerden herhangi biri için işlemin doğru olması durumunda koşulun doğru olacağı anlamına gelir.
SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
(SELECT column_name
FROM table_name
WHERE condition)
Operatör ALL:
ALL, koşulun yalnızca işlemin aralıktaki tüm değerler için doğru olması durumunda doğru olacağı anlamına gelir.
SELECT ALL column_name(s)
FROM table_name
WHERE condition
SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name
FROM table_name
WHERE condition)
Aşağıda "Northwind" veritabanının "Products" ("Ürünler") tablosundan bir örnek yer almaktadır:
ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
---|---|---|---|---|---|
1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18.00 |
2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19.00 |
3 | Aniseed Syrup | 1 | 2 | 12 - 550 ml bottles | 10.00 |
4 | Chef Anton's Cajun Seasoning | 2 | 2 | 48 - 6 oz jars | 22.00 |
5 | Chef Anton's Gumbo Mix | 2 | 2 | 36 boxes | 21.35 |
6 | Grandma's Boysenberry Spread | 3 | 2 | 12 - 8 oz jars | 25.00 |
7 | Uncle Bob's Organic Dried Pears | 3 | 7 | 12 - 1 lb pkgs. | 30.00 |
8 | Northwoods Cranberry Sauce | 3 | 2 | 12 - 12 oz jars | 40.00 |
9 | Mishi Kobe Niku | 4 | 6 | 18 - 500 g pkgs. | 97.00 |
10 | Ikura | 4 | 8 | 12 - 200 ml jars | 31.00 |
Ve "OrderDetails" ("Sipariş ayrıntıları") tablosundaki örnek:
OrderDetailID | OrderID | ProductID | Quantity |
---|---|---|---|
1 | 10248 | 11 | 12 |
2 | 10248 | 42 | 10 |
3 | 10248 | 72 | 5 |
4 | 10249 | 14 | 9 |
5 | 10249 | 51 | 40 |
6 | 10250 | 41 | 10 |
7 | 10250 | 51 | 35 |
8 | 10250 | 65 | 15 |
9 | 10251 | 22 | 6 |
10 | 10251 | 57 | 15 |
Aşağıdaki SQL sorgusu, OrderDetails tablosunda Quantity değeri 10'a eşit olan herhangi bir (ANY) kaydı bulursa ProductName'yi listeler (Quantity sütununun bazı değerleri 10 olduğundan bu, TRUE değerini döndürür):
Run SQLSELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10)
Aşağıdaki SQL sorgusu, OrderDetails tablosunda miktarı 99'dan büyük olan herhangi bir (ANY) kaydı bulursa ProductName'yi listeler (Quantity sütunu 99'dan büyük bazı değerler içerdiğinden bu, TRUE değerini döndürür):
Run SQLSELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 99)
Başka bir SQL ifadesi, OrderDetails tablosunda miktarı 1000'den büyük olan herhangi bir (ANY) kaydı bulursa ProductName'yi listeler (Quantity sütunu 1000'den büyük değerler içermediğinden bu, FALSE değerini döndürür):
Run SQLSELECT ProductName
FROM Products
WHERE ProductID = ANY
(SELECT ProductID
FROM OrderDetails
WHERE Quantity > 1000)
Aşağıdaki SQL deyimi tüm (ALL) ürün adlarını listeler:
Run SQLSELECT ALL ProductName
FROM Products
WHERE TRUE
Aşağıdaki SQL deyimi, OrderDetails tablosundaki tüm (ALL) kayıtların sayısı 10'a eşitse ProductName'yi listeler. Elbette bu, FALSE değerini döndürecektir çünkü Quantity sütunu birçok farklı değere sahiptir (yalnızca 10 değeri değil):
Run SQLSELECT ProductName
FROM Products
WHERE ProductID = ALL
(SELECT ProductID
FROM OrderDetails
WHERE Quantity = 10)