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);