SQL Any, All

创建于 2024-12-02 / 35
字体: [默认] [大] [更大]

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); 亲自试一试 »

0 人点赞过