MySQL - Any 语句

MySQL - Any 语句 首页 / MySQL入门教程 / MySQL - Any 语句

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

语法

以下是说明在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 具有包含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 语句进行验证,如下所示:

MySQL ANY

现在,无涯教程将执行以下语句以了解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 ANY

与语句中的子查询一起使用时,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);

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

软件测试52讲 -〔茹炳晟〕

Go语言从入门到实战 -〔蔡超〕

浏览器工作原理与实践 -〔李兵〕

DDD实战课 -〔欧创新〕

Electron开发实战 -〔邓耀龙〕

编译原理实战课 -〔宫文学〕

林外 · 专利写作第一课 -〔林外〕

说透元宇宙 -〔方军〕

Rust 语言从入门到实战 -〔唐刚〕

好记忆不如烂笔头。留下您的足迹吧 :)