相信 接触过 ocp考题既, 都会见到 correlated subquery的字眼.

correlated subquery的中文名称就是相关子查询呢?

1. 什么是子查询

这个很简单,  子查询就是嵌套在主查询里的查询了.

例如, 在scott 模式下我想查找所有比Allen 工资高的员工

我们可以写成这样:

select a.* from emp a, emp b
where a.sal > b.sal
and b.ename = 'ALLEN'

当然上面的查询语句自不过是简单的连接查询, 并没有用到子查询.

写成这样就是子查询了:

select * from emp
where sal > ( select sal from emp where ename = 'ALLEN')

第二行where 条件中出现了另1个子查询.  反而令sql语句更加容易理解了.

2. 什么是非关联子查询

而子查询也可以分成关联子查询和非关联子查询,  上面那条sql 语句就是非关联子查询.

所谓非关联子查询就是 指子查询可以脱离主查询独立执行.

再举个例子:

我想找出每个部门中最高工资的人.

sql语句可以写成如下:

select a.deptno,a.* from emp a
where (a.deptno, a.sal) in (select deptno, max(sal) from emp group by deptno)

其中的 子查询

select deptno, max(sal) from emp group by deptno

是可以独立执行的.

而且对于整个查询来讲, 是执行一次子查询先, 再执行主查询.

3. 什么是关联子查询

所谓关联子查询就是指子查询与主查询之间有条件关联,  不能独自执行.

看回上面的需求, 我们换一种写法:

select a.deptno, a.* from emp a
where a.sal = (select max(b.sal) from emp b where b.deptno =  a.deptno)

上面的例子就是用到关联子查询了,  其中的子查询因为条件关联了主查询的表. 所以子查询不能单独执行.

对于关联子查询来讲,  是自外到内的, 先执行外查询,.

例如上面的例子,   对于主表a来间,  对于每1个deptno,  都要执行一次子查询.

关联子查询还有1个限制, 就是子查询不能返回多于1行的数据.

否则会出现如下的错误信息:

ORA-01427: 单行子查询返回多个行
01427. 00000 -  "single-row subquery returns more than one row"
*Cause:    
*Action:

Oracle 的关联子查询(correlated subquery) 简介.相关推荐

  1. oracle subquery是什么,如何让非关联子查询(uncorrelated subquery)先执行

    如何让非关联子查询(uncorrelated subquery)先执行 环境:10.2.0.4 / Solaris 9 有一个sql: [php] SELECT M.PROD_DATE, N.FAC_ ...

  2. Oracle 数据库的子查询(关联子查询)

    文章目录 一.子查询结果返回一个值(单列单行) 二.子查询结果返回多行(单列多行) 三.子查询结果返回多列多行 四.关联子查询 (一)子查询执行顺序 (二)exists 关键字 五.子查询总结 六.关 ...

  3. oracle复杂的子查询,Oracle 子查询(复杂select语句)

    在执行数据操作时,如果某个操作需要依赖于另外一个 select语句的查询结果,那么就可以把 select 语句迁入到该操作语句中,这样就形成了一个子查询.实际应用中,表与表之间相互关联,相互依存,这样 ...

  4. SQL子查询和关联子查询

    子查询:将用来定义视图的SELECT语句直接用于FROM子句中. SELECT <列名1>, <列名2>, - FROM (<SELECT语句>) AS <视 ...

  5. SQL中的关联子查询

    目录 关联查询 例子 分解相关的嵌套查询 与不同的表一起使用 关联子查询与内部联接 哪个更快? 哪个更容易阅读? 哪一个更好? HAVING子句中的关联子查询 在本文中,我们将查看几个示例并将关联子查 ...

  6. SQL进阶之关联子查询练习

    SQL进阶之关联子查询 一.关联子查询简介 二.关联子查询实操 1.CreateTable 2.Sample 一.关联子查询简介 通过关联表内部条件从而达到查询效果 二.关联子查询实操 注:版本使用: ...

  7. python中and与or的执行顺序-关联子查询的执行顺序是什么

    sql的编写顺序 select .. from .. where .. group by ..having .. order by .. sql的执行顺序 from .. where .. group ...

  8. 单行子查询 多行子查询 关联子查询 笔记

    1.连接基本语法 select columns_list from table_1 innner join table_2 on join_condition; eg:select e.empno,e ...

  9. order by 子查询_视图,子查询,标量子查询,关联子查询

    视图 子查询 标量子查询 关联子查询 如何用SQL解决业务问题 各种函数 1. 视图 视图内存放SQL查询语句,运行时运行该语句.查出的数据为临时数据 创建视图 create view as 视图名称 ...

最新文章

  1. 《网络攻防实践》第八周作业
  2. C++ leetcode 5. 最长回文子串 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
  3. Linux下Shell的for循环语句
  4. functools学习有感
  5. Android使用READ_CONTACTS读取手机联系人
  6. 学习《Building Applications with FME Objects》 之四 从数据集读取要素
  7. 学好Java开发的关键七步
  8. data.name.toLowerCase() is not a function问题
  9. OLEDB SqlHelper
  10. SQL Server 用SSMS查看依赖关系有时候不准确,改用代码查
  11. 检验成果的软指标与硬指标
  12. c++代码大全_Javascript 代码是如何被压缩的
  13. WebRTC 之 RTX
  14. Windows 和 Linux 上安装 TTF 字体的方法
  15. Ubuntu安装网易云音乐
  16. ROS操作系统入门学习
  17. 机器学习思维导图(基于sklearn)
  18. 禾赛科技2022数字芯片提前批笔试
  19. LaTeX 编辑器对比
  20. 软件测试入职工作流程

热门文章

  1. buu [BJDCTF 2nd]灵能精通-y1ng
  2. buu old-fashion
  3. 2021-07-12
  4. 导入表注入原理和C语言实现
  5. 详解虚函数的实现过程之多重继承(3)
  6. 如何跟踪log4j漏洞原理及发现绕WAF的tips
  7. Mysql内连接_INNER JOIN
  8. Dubbo服务发布调用
  9. Java集合Vector
  10. Mybatis查询日期范围