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);
运行实例»