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

今天看书得到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
FROMemployees
WHEREsalary > ALL ( SELECT salary FROM employees WHERE department_id = 6 )
ORDER BYsalary;

查询结果:

说明:
由上面列表可知,ALL运算符的大于符号,既是查询结果要大于ALL后面子查询的结果集中的最大值,结果集中的最大值是9000(如下图),所以我们上面的查询结果值都大于了9000.

例2:查找工资不等于每个部门平均工资的员工:

SELECT NAME,salary
FROMemployees
WHEREsalary <> ALL ( SELECT AVG( salary ) FROM employees GROUP BY department_id )
ORDER BYsalary DESC;

查询结果:

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

ANY运算符

ANY运算符是一个逻辑运算符,它将值与子查询返回的一组值进行比较。 ANY运算符必须以比较运算符:>,>=,<,<=,=,<>开头,后跟子查询。
如下,对于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
FROMemployees
WHEREsalary < ANY ( SELECT AVG( salary ) FROM employees GROUP BY department_id )
ORDER BYsalary DESC;

查询结果:

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

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

MySQL中ALL 和 ANY的用法相关推荐

  1. Mysql中rank类的函数用法

    Mysql中rank类的函数用法 rank() over 作用:查出指定条件后的进行排名,条件相同排名相同,排名间断不连续. 说明:例如学生排名,使用这个函数,成绩相同的两名是并列,下一位同学空出所占 ...

  2. MySQL数据库,从入门到精通:第四篇——MySQL中常用的运算符及其用法

    MySQl学习(MySQL数据库,从入门到精通:第四篇--MySQL中常用的运算符及其用法 第四篇_MySQL中常用的运算符及其用法运算符 1. 算术运算符 1.加法与减法运算符 2.乘法与除法运算符 ...

  3. mysql gt resource_讲解MySQL中lt;=gt;操作符的用法

    问题 : 我在看以前的一个开发者的代码时看到 WHERE p.name <=> NULL 在这个查询语句中 <=>符号是什么意思啊?是不是和 =号是一样啊?还是一个语法错误啊? ...

  4. 数据库mysql中delimiter的作用和用法

    mysql中解释器以分号作为结束标记. 但有时候虽然不想终止,但是又想要执行某一段呢? delimiter|| CREATE TRIGGER changeAvgAge AFTER INSERT ON ...

  5. MySQL中索引与视图的用法与区别详解

    索引与视图是我们在日常使用mysql必不可少的一部分,最近在学习中看到一本书中关于这方法写的不错,所以这篇文章主要给大家介绍了关于MySQL中索引与视图的使用与区别的相关资料,需要的朋友可以参考借鉴, ...

  6. mysql中gt用法_讲解MySQL中lt;=gt;操作符的用法-一团网

    问题 : 我在看以前的一个开发者的代码时看到 在这个查询语句中 <=>符号是什么意思啊?是不是和 =号是一样啊?还是一个语法错误啊?但是没有显示任何错误或者异常.我已经知道了mysql中的 ...

  7. MySQL中IN和EXISTS的用法

    exists对外表用loop逐条查询,每次查询都会查看exists的条件语句,当 exists里的条件语句能够返回记录行时(无论记录行是的多少,只要能返回),条件就为真,返回当前loop到的这条记录, ...

  8. mysql中concat 和 group_concat()的用法,group_concat()组合成一个逗号分隔的字符串

    一.CONCAT()函数 CONCAT()函数用于将多个字符串连接成一个字符串. 使用数据表Info作为示例,其中SELECT id,name FROM info LIMIT 1;的返回结果为 +-- ...

  9. mysql select语句最简_10个mysql中select语句的简单用法

    1.select语句可以用回车分隔 $sql="select * from article where id=1" 和 $sql="select * from artic ...

最新文章

  1. Python,OpenCV图像处理超好用的工具包imutils
  2. CTO 两年吃回扣上百万元,将面临数十年监禁
  3. 使用WebRTC搭建前端视频聊天室——数据通道篇
  4. mysql中难以理解的sql
  5. App设计灵感之十二组精美的旅行App设计案例
  6. Chosen通用初始化
  7. Android Studio开发基础之AutoCompleteTextView控件的使用
  8. java学习(16):巩固练习
  9. Android复习准备
  10. 使用java实现面向对象 第七章
  11. php防止SQL注入
  12. 计算机操作系统详细学习笔记(四):设备管理 —— I/O 管理
  13. 电商十三、pinyougou02.sql的内容④
  14. 2023年东南大学机械工程考研考情与难度、参考书上岸前辈备考经验
  15. PHP汉字转拼音函数类
  16. pt和px区别 pt是逻辑像素,px是物理像素
  17. JAVA疫情数据可视化系统毕业设计 开题报告
  18. 体系结构复习2——指令级并行(分支预測和VLIW)
  19. RCAN论文笔记:Image Super-Resolution Using Very Deep Residual Channel Attention Networks
  20. Web前端Lec12 - HTTP协议

热门文章

  1. 【Android基础】setTextColor(),setBackgroundColor的参数设置方式
  2. 默认java_默认java格式
  3. 国内唯一系统教程资料Nuttx操作系统移植教程—PIXAWK飞控平台移植必备
  4. Go:关于goroutine及ants的思考
  5. 吉林师范大学博达学院计算机系代码,吉林师范大学博达学院计算机与信息科学系...
  6. 微软的软件工程生命周期
  7. Tomcat8 安装drools7.11
  8. 宠物商店项目_充分利用宠物项目的7个技巧
  9. SQL 2005镜像手册(不含见证服务器)
  10. 使用java画出宝马图标代码