轻松上手,快乐学习!

SQL ANY and 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 WHEREcondition);

ALL 语法

SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_name FROM table_name WHERE condition);
注意:所述的操作符必须是标准比较运算符(=,<>,=,>,> =,<,或<!=)。

演示数据库

以下是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。 以下SQL语句返回TRUE并列出产品名称,如果它在OrderDetails表中找到Quantity= 10的任何记录:

实例

SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);
运行实例»
以下SQL语句返回TRUE并列出产品名称,如果它在OrderDetails表中找到Quantity> 99的任何记录:

实例

SELECT ProductName
FROM Products
WHERE ProductID = ANY (SELECT ProductID FROM OrderDetails WHERE Quantity > 99);
运行实例»

SQL ALL 实例

如果所有子查询值满足条件,则ALL运算符返回TRUE。 如果OrderDetails表中的所有记录的Quantity= 10,则以下SQL语句返回TRUE并列出产品名称:

实例

SELECT ProductName
FROM Products
WHERE ProductID = ALL (SELECT ProductID FROM OrderDetails WHERE Quantity = 10);
运行实例»