MySQL ANY条件

ANY 关键字是一个 MySQL 运算符,如果对于任何子查询条件的比较为 TRUE,则返回布尔值 TRUE 。换句话说,如果执行 SQL 查询时满足任何子查询条件,则此关键字返回 true。ANY 关键字必须跟在比较运算符之后。注意,ALL SQL运算符与 ANY 运算符相关,但是当 MySQL 中的条件满足所有子查询值时,它返回 true。

ANY 运算符的作用类似于将表的值与子查询条件提供的结果集中的每个值进行比较。然后,如果它找到与子查询的至少一个值/行匹配的任何值,则返回 TRUE 结果。

一、MySQL ANY条件 语法

以下是说明在 MySQL 中使用 ANY 运算符的语法:

operand comparison_operator ANY (subquery) 

其中比较运算符可以是以下之一:

=  >  <  >=  <=  <>  != 

这个语法也可以写成:

SELECT column_lists FROM table_name1 WHERE column_name Operator ANY (SELECT column_name FROM table_name2 WHERE condition);

我们可以理解 ANY 在MySQL中是如何工作的通过以下声明:

SELECT colm1 FROM table1 WHERE colm1 > ANY (SELECT colm1 FROM table2);  

假设table1有一行包含一个数字 (10)。在这种情况下,如果table2包含 (20、15 和 6) ,则上述表达式返回true 。这是因为 table2 中有一个值 6,小于 10。如果 table2 包含 (15, 20),或者 table2 为空,则此表达式返回false。如果所有表字段都包含 (NULL, NULL, NULL),则此表达式为unknown。

二、MySQL ANY条件 示例

让我们创建一个名为table1和table2的两个表,然后使用以下语句将一些值插入其中:

CREATE TABLE table1 (  
    num_value INT  
);   
INSERT INTO table1 (num_value)   
VALUES(10), (20), (25);  
  
CREATE TABLE table2 (  
    num_val int  
);   
INSERT INTO table2 (num_val)  
VALUES(20), (7), (10);  

上述语句执行成功后,我们可以使用SELECT语句进行验证如下:

现在,我们将执行以下语句来了解 ANY 运算符的用法:

SELECT num_value FROM table1   
WHERE num_value > ANY (SELECT num_val FROM table2);  

此语句返回 true 并给出以下输出,因为 table2 包含 (20、10 和 7),并且 table2 中有一个值 7,它小于 table1 的 10、20 和 25。

MySQL 中的IN 关键字在与语句中的子查询一起使用时是= ANY 的别名。因此,以下两个语句在 MySQL 中是相同的:

SELECT colm1 FROM table1 WHERE colm1 = ANY (SELECT colm1 FROM table2);  
SELECT colm1 FROM table1 WHERE colm1 IN (SELECT colm1 FROM table2);  

但是当我们将它与表达式列表一起使用时,我们不能说 IN 和 = ANY 是同义词。这是因为 IN 可以获取表达式列表,但 = ANY 不能。

此外,NOT IN不能是<> ANY运算符的别名,但它可以用于<> ALL。

MySQL 中的单词SOME可以是 ANY 的别名。因此,这两个SQL语句是等价的:

SELECT colm1 FROM table1 WHERE colm1 <>ANY (SELECT colm1 FROM table2);  
SELECT colm1 FROM table1 WHERE colm1 <> SOME (SELECT colm1 FROM table2);  

三、MySQL中ANY运算符的优点

  • ANY 是返回布尔值的逻辑运算符。它允许我们选择 SELECT 语句的任何或某些行。
  • 由于比较运算符在此运算符之前,因此如果任何子查询满足指定条件,它总是返回 TRUE。
  • 它提供结果,该结果是表中与第二个表中的任何记录匹配的唯一列值。
  • 我们可以使用带有 SELECT 和 WHERE 关键字的 ANY 运算符执行多次比较。

在本文中,我们学习了如何在 MySQL 中使用 ANY 运算符。只有当任何值满足条件时,它才会从 SQL 语法中过滤结果集。否则,它会给出一个错误的值。

热门文章

优秀文章