sql允许多层嵌套,子查询是嵌套在其他查询中的查询.我们可以把子查询当做一张表来看到,即外层语句可以把内嵌的查询结果当做一张表使用. 子查询查询结果有三种情况 不返回查询记录.若子查询不返回记录则主查询也不会有查询记录 查询单行记录.若子查询返回的是单行记录,则在主查询中可以对该单行记录使用比较运算符 查询多行记录.若子查询返回多行记录,则在主查询中不能对该子查询记录使用比较运算符 条件比较=,!=,<>,<,>,<=,>=,any,some,allis null,is…
用some,any和all对子查询中返回的多行结果进行处理. 下面我们来简单介一下这几个关键词的含义. * Some在此表示满足其中一个的意义,是用or串起来的比较从句. * Any也表示满足其中一个的意义,也是用or串起来的比较从句,区别是any一般用在非“=”的比较关系中,这也很好理解,英文中的否定句中使用any肯定句中使用some,这一点是一样的. * All则表示满足其其中所有的查询结果的含义,使用and串起来的比较从句. Any 带[any]的嵌套查询和[some]的嵌套查询功能是一样…
这里的in后面的句子可以理解为or拼接,简单举例即 in (9566,9839,null)可以等价于mgr=9566 or mgr=9839 or mgr=null, not in (9566,9839,null)可以等价于not(mgr=9566 or mgr=9839 or mgr=null)或mgr!=9566 and mgr!=9839 and mgr!=null. 为什么都是or拼接,in可以而not in不可以呢,可以把not in理解为后面的and表达式就知道了,因为mgr=nul…
在执行数据操作时,如果某个操作需要依赖于另外一个 select语句的查询结果,那么就可以把 select 语句迁入到该操作语句中,这样就形成了一个子查询.实际应用中,表与表之间相互关联,相互依存,这样就可以根据数据之间的关系使用相应的子查询,从而实现复杂的查询. 一.子查询 子查询是在 SQL 语句内的另外一条 select 语句,也被称为内查询或是 内select语句.在select.insert.update 或delete 命令中允许是一个表达式的地方都可以包含子查询,子查询也可以包含在另…
22.1.什么是子查询: 1.子查询就是在一条sql语句中嵌入select语句: 2.子查询可区分为关联子查询和非关联子查询,他们和主查询之间的执行顺序和关系是不同的: 22.2.关联子查询: 1.说明: 在关联子查询中,对于主查询返回的每一行数据,子查询都要执行一次.另外,关联子查询的信息流是双向的, 主查询的每行数据传递一个值给子查询,然后子查询为每一行数据执行一次并返回它的记录,之后主查询根据 返回的记录做出决策. 2.特点: 子查询引用主查询表的列,先执行主查询,再执行子查询,子查询和主…
1.子查询在SELECT.UPDATE.DELETE语句内部可以出现SELECT语句.内部的SELECT语句结果可以作为外部语句中条件子句的一部分,也可以作为外部查询的临时表.子查询的类型有: ① 单行子查询:不向外部返回结果,或者只返回一行结果. ② 多行子查询:向外部返回零行.一行或者多行结果. 2.ANY 和 ALL ①<any:比子查询结果中任意的值都小,也就是说,比子查询结果中最大值还小,那么同理>any表示比子查询结果中最小的还大. SELECT ENAME,JOB,SAL FRO…
子查询返回有单行,多行和null值:适用于单行子查询的比较运算符是=,>,>=,<,<=<>和!=.适用于多行子查询的比较运算符是in,not in,any和any.在子查询中不可回避的是会返回null值,下面就这个问题来讨论一下. 在单行子查询中 SQL> select last_name,department_id from employees where department_id is null; LAST_NAME DEPARTMENT_ID -----…
本节介绍Oracle子查询的相关内容: 实例用到的数据为oracle中scott用户下的emp员工表,dept部门表,数据如下: 一.子查询 1.概念:嵌入在一个查询中的另一个查询语句,也就是说一个查询作为另一个查询的条件,这个查询称为子查询. 那么可以使用子查询的位置有select后面.from后面.where后面以及having后面. 2.分类:(1)单行子查询:查询结果只返回一行数据   (2)多行子查询:查询结果返回多行数据,多行子查询的操作符有IN,ALL,ANY,具体用法实例中说明.…
oracle 子查询和组合函数 --查询与"SCOTT"在同一个部门的员工 select empno,ename,deptno from emp where deptno in (select deptno from emp where ename='SCOTT'); --查找不在销售部和财务部工作的雇员编号.姓名和部门编号. select empno,ename,deptno from emp where deptno not in (select deptno from dept…
Oracle 高级子查询 高级子查询相对于简单子查询来说,返回的数据行不再是一列,而是多列数据. 1,多列子查询 主查询与子查询返回的多个列进行比较 查询与141号或174号员工的manager_id和department_id相同的其他员工的employee_id, manager_id, department_id select employee_id, manager_id, department_id from employees where (manager_id,department…