SQL ANY и ALL
ANY и ALL
Операторы ANY и ALL используются с предложением WHERE или HAVING.
Оператор ANY возвращает true, если какое-либо из значений подзапроса удовлетворяет условию.
Оператор ALL возвращает true, если все значения подзапроса удовлетворяют условию.
Синтаксис ANY
SELECT column_name(s)
FROM table_name
WHERE
column_name operator ANY
(SELECT column_name FROM table_name WHERE
condition);
Синтаксис ALL
SELECT column_name(s)
FROM table_name
column_name operator ALL
(SELECT column_name FROM table_name WHERE condition);
Примечание: Оператор должен быть стандартным оператором сравнения (=, <>, !=, >, >=, <, or <=).
Демо база данных
Ниже приведен выбор из таблицы "Products" в образце базы данных Northwind:
ProductID | ProductName | SupplierID | CategoryID | Unit | Price |
---|---|---|---|---|---|
1 | Chais | 1 | 1 | 10 boxes x 20 bags | 18 |
2 | Chang | 1 | 1 | 24 - 12 oz bottles | 19 |
3 | Aniseed Syrup | 1 | 2 | 12 - 550 ml bottles | 10 |
4 | Chef Anton's Cajun Seasoning | 2 | 2 | 48 - 6 oz jars | 22 |
5 | Chef Anton's Gumbo Mix | 2 | 2 | 36 boxes | 21.35 |
И выбор из таблицы "OrderDetails":
OrderDetailID | OrderID | ProductID | Quantity |
---|---|---|---|
1 | 10248 | 11 | 12 |
2 | 10248 | 42 | 10 |
3 | 10248 | 72 | 5 |
4 | 10249 | 14 | 9 |
5 | 10249 | 51 | 40 |
Примеры SQL ANY
Оператор ANY возвращает TRUE, если какое-либо из значений подзапроса удовлетворяет условию.
Следующий оператор SQL возвращает TRUE и перечисляет названия продуктов, если он находит какие-либо записи в таблице OrderDetails, что количество = 10:
Пример
SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT
ProductID FROM OrderDetails WHERE Quantity = 10);
Попробуйте сами »
Следующий оператор SQL возвращает TRUE и перечисляет названия продуктов, если он находит какие-либо записи в таблице OrderDetails, что количество > 99:
Пример
SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT ProductID
FROM OrderDetails WHERE Quantity > 99);
Попробуйте сами »
Пример SQL ALL
Оператор ALL возвращает TRUE, если все значения подзапроса удовлетворяют условию.
Следующая инструкция SQL возвращает TRUE и перечисляет названия продуктов, если все записи в таблице OrderDetails имеют значение quantity = 10 ( таким образом, этот пример возвращает FALSE, поскольку не все записи в таблице OrderDetails имеют значение quantity = 10):
Пример
SELECT ProductName
FROM Products
WHERE ProductID = ALL (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);
Попробуйте сами »