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_nameFROM table_name WHEREcondition);
ALL 语法
SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
(SELECT column_nameFROM table_nameWHERE 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);