ANY关键字是一个MySQL运算符,如果子查询条件中ANY的比较结果为TRUE,则它会返回布尔值TRUE 。换句话说,如果在执行SQL查询时满足任何子查询条件,则此关键字返回true。注意, ALL SQL 运算符与ANY运算符相关,但是当MySQL中的条件满足所有子查询值时,它将返回true。
以下是说明在MySQL中使用ANY运算符的语法:
operand comparison_operator ANY (subquery)
比较运算符可以是以下之一:
= > = !=
该语法也可以写成:
链接:https://www.learnfk.comhttps://www.learnfk.com/mysql/mysql-any.html
来源:LearnFk无涯教程网
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 具有包含number(10)的行。在这种情况下,如果 table2 包含(20、15和6),则上述表达式将返回 true 。这是因为table2中的值6小于10。如果table2包含(15,20),ortable2为null,则此表达式返回 false 。如果所有表字段都包含(NULL,NULL,NULL),则此表达式为unkown。
让无涯教程创建一个名为 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关键字是
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);
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)