MySQL中ALL 和 ANY的用法

MySQL中ALL 和 ANY的用法历览前贤国与家 成由勤俭破由奢 序 今天看书得到 MySQL 中 ALL 和 ANY 的用法 在此之前甚至都不知道 MySQL 还有这两个运算符 现在数据表如下 分别是姓名 薪水 部门 ID ALL 运算符 ALL 运算符是一个逻辑运算符 它将单个值与子查询返回的单列值集进行比较

大家好,我是讯享网,很高兴认识大家。

“历览前贤国与家,成由勤俭破由奢”

今天看书得到MySQL中ALL和ANY的用法,在此之前甚至都不知道MySQL还有这两个运算符。
现在数据表如下,分别是姓名、薪水、部门ID:
在这里插入图片描述

ALL运算符

ALL运算符是一个逻辑运算符,它将单个值与子查询返回的单列值集进行比较。
ALL运算符必须以比较运算符开头,例如:>,>=,<,<=,<>,=,后跟子查询。
如下,对于ALL运算符的条件和描述说明:

条件 描述
c > ALL(…) c列中的值必须大于要评估为true的集合中的最大值。
c >= ALL(…) c列中的值必须大于或等于要评估为true的集合中的最大值。
c < ALL(…) c列中的值必须小于要评估为true的集合中的最小值。
c <= ALL(…) c列中的值必须小于或等于要评估为true的集合中的最小值。
c <> ALL(…) c列中的值不得等于要评估为true的集合中的任何值。
c = ALL(…) c列中的值必须等于要评估为true的集合中的任何值。

例1:查找工资大于部门ID为6的员工最高工资的所有员工:

SELECT NAME, salary FROM employees WHERE salary > ALL ( SELECT salary FROM employees WHERE department_id = 6 ) ORDER BY salary; 
讯享网

查询结果:
在这里插入图片描述
说明:
由上面列表可知,ALL运算符的大于符号,既是查询结果要大于ALL后面子查询的结果集中的最大值,结果集中的最大值是9000(如下图),所以我们上面的查询结果值都大于了9000.
在这里插入图片描述
例2:查找工资不等于每个部门平均工资的员工:

讯享网SELECT NAME, salary FROM employees WHERE salary <> ALL ( SELECT AVG( salary ) FROM employees GROUP BY department_id ) ORDER BY salary DESC; 

查询结果:
在这里插入图片描述
说明:
由上面列表可知,ALL运算符的不等于符号,既是查询结果要不等于ALL后面子查询的结果集中的任何值,结果集如下图,所以我们上面的查询结果都不属于子查询的结果集中的任一值。
在这里插入图片描述

ANY运算符

条件 描述
x = ANY (…) c列中的值必须与集合中的一个或多个值匹配,以评估为true。
x != ANY (…) c列中的值不能与集合中的一个或多个值匹配以评估为true。
x > ANY (…) c列中的值必须大于要评估为true的集合中的最小值。
x < ANY (…) c列中的值必须小于要评估为true的集合中的最大值。
x >= ANY (…) c列中的值必须大于或等于要评估为true的集合中的最小值。
x <= ANY (…) c列中的值必须小于或等于要评估为true的集合中的最大值。

例1:查找薪水低于每个部门平均薪水的所有员工:

SELECT NAME, salary FROM employees WHERE salary < ANY ( SELECT AVG( salary ) FROM employees GROUP BY department_id ) ORDER BY salary DESC; 

查询结果:
在这里插入图片描述
说明:
由上面列表可知,ANY运算符的小于符号,既是查询结果要小于ANY后面子查询的结果集中的最大值,结果集中最大值为19333.33333(如下图),所以我们上面的查询结果小于子查询的结果集中的最大值。
在这里插入图片描述

以上内容参考至:SQL All运算符 和SQL Any运算符

小讯
上一篇 2025-03-16 20:28
下一篇 2025-02-18 08:31

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/28674.html