SQL ANY И ALL Операторы
SQL 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
WHERE
column_name operator ALL
(SELECT column_name FROM table_name WHERE condition);
Note: The operator must be a standard comparison operator (=, <>, !=, >, >=, <, 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 имеют количество = 10:
Пример
SELECT ProductName
FROM Products
WHERE ProductID = ALL (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);