zoukankan      html  css  js  c++  java
  • 关联子查询与非关联子查询区别

    子查询可区分为关联子查询和非关联子查询,他们和外层查询之间的执行顺序和关系是不同的。

    1. 关联子查询:

      在关联子查询中,对于外部查询返回的每一行数据,内部查询都要执行一次。另外,关联子查询的信息流是双向的,外部查询的每行数据传递一个值给子查询,然后子查询为每一行数据执行一次并返回它的记录,之后外部查询根据返回的记录做出决策。

      select * from dept d where exists(select * from emp e where e.deptno = d.deptno);

    特点:

    1、先执行外层查询

    2、再执行内层查询

    2. 非关联子查询:

      非相关子查询是独立于外部查询的子查询,子查询执行完毕后将值传递给外部查询。

      select * from emp where sal = (select max(sal) from emp);

    特点:

    1、先执行内层查询

    2、再执行外层查询

    3.子查询结果的三种情况:

    1) 子查询的结果是单行单列 

      子查询结果只要是单行单列, 肯定在 WHERE 后面作为条件, 父查询使用: 比较运算符, 如: > <<>=等

      

    2) 子查询的结果是多行单列

      子查询结果是单例多行,结果集类似于一个数组,父查询使用 IN 运算符

      

    3) 子查询的结果是多行多列 

      子查询结果只要是多列,肯定在 FROM 后面作为表

      

  • 相关阅读:
    LeetCode278. 第一个错误的版本
    LeetCode275. H 指数 II
    LeetCode274. H 指数
    LeetCode273. 整数转换英文表示
    LeetCode268. 缺失数字
    LeetCode264. 丑数 II
    LeetCode263. 丑数
    关于解决Chrome新版本中cookie跨域携带和samesite的问题处理
    java将list转为树形结构的方法
    Python pycharm selenium hyrobot 学习中遇到的问题汇总2
  • 原文地址:https://www.cnblogs.com/chen8023miss/p/11187717.html
Copyright © 2011-2022 走看看