zoukankan      html  css  js  c++  java
  • Oracle【子查询】

    Oracle子查询:当一个查询依赖于另外一个查询的结果的时候,就需要使用子查询。
    单行子查询 :
    筛选条件不明确,需要执行一次查询且查询结果只有一个字段且字段值只有一个。
    注意:where子句中允许出现查询语句,该查询语句称为子查询。
    使用:select 内容 from 表名 where 字段名 比较运算符 子查询语句

    --查询所有比雇员'CLARK'工资高于员工的信息
    select * from emp where sal>(select sal from emp where ename='CLARK');
    --查询工资高于平均工资的员工的名字和工资
    select ename,sal from emp where sal>(select avg(sal) from emp);
    --查询和soctt属于同一部门且工资比他低的员工资料
    select * from emp where deptno=(select deptno from emp where ename='SCOTT') and sal<(select sal from emp where ename='SCOTT');
    --查询工资最高的员工资料
    select * from emp where sal=(select max(sal) from emp);
    --查询职务和SCOTT相同,雇佣时间早的员工信息
    select * from emp where job=(select job from emp where ename='SCOTT') and hiredate < (select hiredate from emp where ename='SCOTT');
    --查询工资比SCOTT高或者雇佣时间早的员工编号和姓名
    select empno,ename from emp where sal>(select sal from emp where ename='SCOTT') or hiredate < (select hiredate from emp where ename='SCOTT');

    多行子查询:
    子查询的结果只有一个字段但是字段有n个值,考虑使用多行子查询,其实使用关键字

    关键字1:any 任意
      select 内容 from 表名 where 字段名 比较运算符 any 子查询语句
    关键字2:all 所有
      select 内容 from 表名 where 字段名 比较运算符 all 子查询语句
    关键字3:in 表示任意存在,相当于 = any 
      select 内容 from 表名 where 字段名 in 子查询语句 
      select 内容 from 表名 where 字段名 not in 子查询语句

    --查询工资高于任意一个CLERK的所有员工信息
    select * from emp where sal> any (select sal from emp where job='CLERK');
    --查询工资高于所有的SALESMAN的员工信息
    select * from emp where sal> all (select sal from emp where job='SALESMAN');
    --查询部门20中同部门10的雇员工作一样的雇员信息
    select * from emp where job  in (select job from emp where deptno=10) and deptno=20;
    
  • 相关阅读:
    MAC使用小技巧(二)
    Swift # GET&POST请求 网络缓存的简单处理
    iOS:Block写递归
    Swift # 项目框架
    uva 11665 Chinese Ink (几何+并查集)
    uva 11859 Division Game
    uva 11916 Emoogle Grid (BSGS)
    uva 11754 Code Feat (中国剩余定理)
    hdu 4347 The Closest M Points(KD树)
    2013多校训练赛第四场 总结
  • 原文地址:https://www.cnblogs.com/cao-yin/p/9747588.html
Copyright © 2011-2022 走看看