MySQL 教程

MySQL 教程 MySQL 简介 MySQL 管理系统

MySQL SQL 语句

MySQL SQL MySQL SELECT MySQL WHERE MySQL AND, OR, NOT MySQL ORDER BY MySQL INSERT INTO MySQL NULL Values MySQL UPDATE MySQL DELETE MySQL LIMIT MySQL MIN 和 MAX MySQL COUNT, AVG, SUM MySQL LIKE MySQL 通配符 MySQL IN MySQL BETWEEN MySQL 别名 MySQL 联接 MySQL INNER JOIN MySQL LEFT JOIN MySQL RIGHT JOIN MySQL CROSS JOIN MySQL 自联接 MySQL UNION MySQL GROUP BY MySQL HAVING MySQL EXISTS MySQL ANY, ALL MySQL INSERT SELECT MySQL CASE MySQL Null 函数 MySQL 注释 MySQL 运算符

MySQL 数据库

MySQL 创建数据库 MySQL 删除数据库 MySQL 创建表 MySQL 删除表 MySQL 更改表 MySQL 约束 MySQL Not Null MySQL Unique MySQL Primary Key MySQL Foreign Key MySQL Check MySQL Default MySQL Create Index MySQL 自动增量 MySQL 日期 MySQL 视图

MySQL 参考手册

MySQL 数据类型 MySQL 函数

MySQL 实例

MySQL 实例 MySQL 测验 MySQL 练习


MySQL ANY 和 ALL 运算符

MySQL ANY 和 ALL 运算符

ANYALL 运算符允许您在单个列值和范围之间执行比较 其他值。


ANY 运算符

ANY 运算符:

  • 返回一个布尔值作为结果
  • 如果任何子查询值满足条件,则返回 TRUE

ANY 表示如果该范围内的任何值的运算为真,则条件为真。

ANY 语法

SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
  (SELECT column_name
 
FROM table_name
 
WHERE condition);

注意: 运算符 必须是标准比较运算符 (=, <>, !=, >, >=, <, or <=)。


ALL 运算符

ALL 运算符:

  • 返回一个布尔值作为结果
  • 如果所有子查询值都满足条件,则返回 TRUE
  • SELECTWHEREHAVING 语句一起使用

ALL 表示仅当操作对范围内的所有值都为真时,条件才会为真。

SELECT 的 ALL 语法

SELECT ALL column_name(s)
FROM table_name
WHERE condition;

ALL 语法与 WHERE 或 HAVING

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
6 Grandma's Boysenberry Spread 3 2 12 - 8 oz jars 25
7 Uncle Bob's Organic Dried Pears 3 7 12 - 1 lb pkgs. 30
8 Northwoods Cranberry Sauce 3 2 12 - 12 oz jars 40
9 Mishi Kobe Niku 4 6 18 - 500 g pkgs. 97

以及从 "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
6 10250 41 10
7 10250 51 35
8 10250 65 15
9 10251 22 6
10 10251 57 15


SQL ANY 示例

如果发现 OrderDetails 表中的任何记录的 Quantity 等于 10,则以下 SQL 语句列出 ProductName(这将返回 TRUE,因为 Quantity 列的某些值是 10):

实例

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity = 10);
亲自试一试 »

如果发现 OrderDetails 表中的任何记录的 Quantity 大于 99,则以下 SQL 语句将列出 ProductName(这将返回 TRUE,因为 Quantity 列的某些值大于 99):

实例

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity > 99);
亲自试一试 »

如果发现 OrderDetails 表中的任何记录的 Quantity 大于 1000,则以下 SQL 语句列出 ProductName(这将返回 FALSE,因为 Quantity 列没有大于 1000 的值):

实例

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity > 1000);
亲自试一试 »

SQL ALL 示例

以下 SQL 语句列出所有产品名称:

实例

SELECT ALL ProductName
FROM Products
WHERE TRUE;
亲自试一试 »

如果 OrderDetails 表中的所有记录的 Quantity 等于 10,则以下 SQL 语句列出 ProductName。这当然会返回 FALSE,因为 Quantity 列有许多不同的值(不仅仅是 10 的值):

实例

SELECT ProductName
FROM Products
WHERE ProductID = ALL
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity = 10);
亲自试一试 »