在 where子句中使用子查询(二)

目录

ANY

=ANY :功能上与 IN 是没有任何区别的

 >ANY :比子查询返回的最小值要大

ALL

>AL :比子查询返回的最大值要大

EXISTS() 判断

NOT EXISTS 


Oracle从入门到总裁:https://blog.csdn.net/weixin_67859959/article/details/135209645

在 WHERE 子句里面主要提供 3 个运算符: IN、ANY、ALL

前面讲了IN

ANY

ANY 操作实质上有 3 种子语法

=ANY :功能上与 IN 是没有任何区别的

SQL> select * from emp2  where sal=any(select sal from emp where job='MANAGER');EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7566 JONES                MANAGER                  7839 02-4月 -81           2975                    207698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    307782 CLARK                MANAGER                  7839 09-6月 -81           2450                    10

 >ANY :比子查询返回的最小值要大

SQL> select * from emp2  where sal>any(select sal from emp where job='MANAGER');EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7839 KING                 PRESIDENT                     17-11月-81           5000                    107902 FORD                 ANALYST                  7566 03-12月-81           3000                    207566 JONES                MANAGER                  7839 02-4月 -81           2975                    207698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30

 因为子查询中有 3 个值: 2975、2850 和 2450,最小的是 2450

所以

>ANY 操作返回所有比 2450 大的记录

<ANY :比子查询返回的最大的值要小

SQL> select * from emp2  where sal<any(select sal from emp where job='MANAGER');EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7369 SMITH                CLERK                    7902 17-12月-80            800                    207900 JAMES                CLERK                    7698 03-12月-81            950                    307521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         307654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         307934 MILLER               CLERK                    7782 23-1月 -82           1300                    107844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         307499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         307782 CLARK                MANAGER                  7839 09-6月 -81           2450                    107698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    30

 因为子查询中有 3 个值: 2975、2850 和 2450,最大的是 2975

所以

<ANY 操作返回所有比 2975 小的记录

ALL

AL 操作有两种使用形式 

>AL :比子查询返回的最大值要大

SQL> select * from emp2  where sal>ALL(select sal from emp where job='MANAGER');EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7902 FORD                 ANALYST                  7566 03-12月-81           3000                    207839 KING                 PRESIDENT                     17-11月-81           5000                    10

因为子查询中有 3 个值: 2975、2850 和 2450,最大的是 2975

所以

>AL 操作返回所有比 2975 大的记录

<AL :比子查询返回的最小值要小

SQL> select * from emp2  where sal<ALL(select sal from emp where job='MANAGER');EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         307844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         307934 MILLER               CLERK                    7782 23-1月 -82           1300                    107521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         307654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         307900 JAMES                CLERK                    7698 03-12月-81            950                    307369 SMITH                CLERK                    7902 17-12月-80            800                    20

因为子查询中有 3 个值: 2975、2850 和 2450,最小的是 2450

所以

>AL 操作返回所有比 2450 小的记录

EXISTS() 判断

SQL>   SELECT * FROM emp2    WHERE EXISTS( SELECT * FROM emp WHERE empno=7839) ;EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7369 SMITH                CLERK                    7902 17-12月-80            800                    207499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         307521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         307566 JONES                MANAGER                  7839 02-4月 -81           2975                    207654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         307698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    307782 CLARK                MANAGER                  7839 09-6月 -81           2450                    107839 KING                 PRESIDENT                     17-11月-81           5000                    107844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         307900 JAMES                CLERK                    7698 03-12月-81            950                    307902 FORD                 ANALYST                  7566 03-12月-81           3000                    207934 MILLER               CLERK                    7782 23-1月 -82           1300                    108989 HELLO

因为子查询“ (SELECT * FROM emp WHERE empno=7839) ”有查询结果,

所以 EXISTS() 就认为数据存在,外部查询可以查询出内容

SQL> select * from emp2  where exists(3  select 'hello' from dual where 1=1);EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7369 SMITH                CLERK                    7902 17-12月-80            800                    207499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         307521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         307566 JONES                MANAGER                  7839 02-4月 -81           2975                    207654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         307698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    307782 CLARK                MANAGER                  7839 09-6月 -81           2450                    107839 KING                 PRESIDENT                     17-11月-81           5000                    107844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         307900 JAMES                CLERK                    7698 03-12月-81            950                    307902 FORD                 ANALYST                  7566 03-12月-81           3000                    207934 MILLER               CLERK                    7782 23-1月 -82           1300                    108989 HELLO

EXISTS() 只关心子查询里面返回的是否有数据行,至于是什么数据行,它不关心

因此,上面的查 询语句实现的效果也是查询出数据表 emp 中全部记录

NOT EXISTS 

SQL> select * from emp2  where NOT exists(3  select 'hello' from dual where 1=2);EMPNO ENAME                JOB                       MGR HIREDATE              SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- -------------- ---------- ---------- ----------7369 SMITH                CLERK                    7902 17-12月-80            800                    207499 ALLEN                SALESMAN                 7698 20-2月 -81           1600        300         307521 WARD                 SALESMAN                 7698 22-2月 -81           1250        500         307566 JONES                MANAGER                  7839 02-4月 -81           2975                    207654 MARTIN               SALESMAN                 7698 28-9月 -81           1250       1400         307698 BLAKE                MANAGER                  7839 01-5月 -81           2850                    307782 CLARK                MANAGER                  7839 09-6月 -81           2450                    107839 KING                 PRESIDENT                     17-11月-81           5000                    107844 TURNER               SALESMAN                 7698 08-9月 -81           1500          0         307900 JAMES                CLERK                    7698 03-12月-81            950                    307902 FORD                 ANALYST                  7566 03-12月-81           3000                    207934 MILLER               CLERK                    7782 23-1月 -82           1300                    108989 HELLO

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/491213.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

zookeeper快速上手

文章目录 1. docker安装zookeeper2. zookeeper基本使用&#xff08;Linux&#xff09;新增结点查看命令修改命令删除命令其他命令 3. zookeeper ACL(Linux)ACL 命令行ACL 构成ACL 特性world授权模式ip授权模式auth模式digest授权模式 4. IDEA操作Zookeeper连接zookeeper创建结点…

推荐Miaoo朋友圈程序全开源版源码

Miaoo朋友圈的全开源程序源码提供了一套完整的解决方案&#xff0c;允许用户在前台轻松发布图文、视频和音乐内容。同时&#xff0c;用户可以设置地理位置信息&#xff0c;或者选择自定义位置。此外&#xff0c;系统支持将发布的内容设置为广告模式&#xff0c;并通过站内消息或…

来看大厂如何设计运营后台系统的?

0 背景 重运营的应用。对于App里的顶导航、我的页面、弹窗等&#xff0c;需要根据模式、版本、平台、语言、渠道等不同的维度进行运营管理。随着业务快速发展&#xff0c;版本快速迭代&#xff0c;如何&#xff1a; 保持运营资源能够被高效、稳定和灵活地配置高效稳定的为新的…

pytorch数学运算

目录 1. pytorch的数学运算包括2. 基本运算3. matmul4. power sqrt rsqrt5. exp log6. 近似值7. clamp 1. pytorch的数学运算包括 ▪Add/minus/multiply/divide ▪Matmul ▪Pow ▪Sqrt/rsqrt ▪Round 2. 基本运算 、-、*、/ 也可以使用函数add sub mul div 3. matmul 矩阵…

Qt Android sdk配置报错解决

使用的jdk8总是失败&#xff0c;报错command tools run以及platform sdk等问题。后来主要是设置jdk版本为17&#xff0c;就配置生效了。Android sdk路径可以选用Android Studio自带的&#xff0c;但是也要在Qt中点击“设置SDK”按钮做必要的下载更新等。 编译器这里会自动检测到…

vue3个人网站电子宠物

预览 具体代码 Attack.gif Attacked.gif Static.gif Walk.gif <template><div class"pet-container" ref"petContainer"><p class"pet-msg">{{ pet.msg }}</p><img ref"petRef" click"debounce(attc…

流浪动物救助平台:Java开发的实践与思考

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

域名系统与IP地址分配

域名 域名的概述 域名是一个逻辑的概念&#xff0c;它不反映主机的物理地点 域名结构 由于数字形式的IP地址难以记忆和理解&#xff0c;为此人们采用英文符号来表示IP地址&#xff0c;这就产生了域名&#xff0c;域名长度不超过255各字符&#xff0c;每一层域名长度不超过6…

ABAP - Function ALV 05 添加选择框列、全选、取消全选

很多用户不习惯原生GRID的选择模式&#xff0c;所以业务需要用到自定义的选择框来进行数据的操作&#xff0c;显示效果如图所示&#xff0c;增加一条选择列&#xff0c;且配置全选和全选全选的按钮功能&#xff0c;如下图所示。 实现这种功能需要用到Fieldcat的参数控制以及GUI…

电机控制----电机反电动势波形的测量

电机控制----电机反电动势波形的测量 很多人在开发霍尔传感器方波控制时&#xff0c;在如何准确确定出三相绕组的通电顺序方面存在疑惑&#xff0c;在网上找了很多资料都是只给出了相序表&#xff0c;但是真正拿过来引用时却往往对应不了自己的电机&#xff0c;导致项目开发过…

行业证书值得考吗?

在我个人看法&#xff0c;如果时间和经济条件允许&#xff0c;建议考取行业认证证书。这些职能证书犹如一位引领我们进入专业领域的良师&#xff0c;它们或许不能直接提供直接答案&#xff0c;但却为我们敞开了知识的大门&#xff0c;其内含的思维方式是系统性和结构性的。此外…

(202402)多智能体MetaGPT入门2:AI Agent知识体系结构

文章目录 前言1 智能体定义2 热门智能体案例3 智能体的宏观机会4 AI Agent与Sy1&Sy2观看视频 前言 感谢datawhale组织开源的多智能体学习内容&#xff0c;飞书文档地址在https://deepwisdom.feishu.cn/wiki/KhCcweQKmijXi6kDwnicM0qpnEf 本章主要为Agent相关理论知识的学…