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);
注释: 运算符必须是标准比较运算符 (=, <>, !=, >, >=, <, or <=).
演示数据库
以下是从 Northwind 示例数据库的 "Products" 表中选择的内容:
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。
如果在 OrderDetails 表中找到 quantity=10 的任何记录,以下 SQL 语句将返回 TRUE 并列出产品名称:
实例
SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT
ProductID FROM OrderDetails WHERE Quantity = 10);
亲自试一试 »
如果在 OrderDetails 表中发现任何数量大于99的记录,以下 SQL 语句将返回 TRUE 并列出产品名称:
实例
SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT ProductID
FROM OrderDetails WHERE Quantity > 99);
亲自试一试 »
SQL ALL 实例
如果所有子查询值都满足条件,则 ALL 运算符返回 TRUE。
如果 OrderDetails 表中的所有记录的数量都为10,则以下 SQL 语句将返回 TRUE 并列出产品名称(因此,本例将返回 FALSE,因为并非 OrderDetails 表中的所有记录的数量都为10):
实例
SELECT ProductName
FROM Products
WHERE ProductID = ALL (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);
亲自试一试 »