Oracle子查询

子查询
定义:将一个查询块嵌套在另一个查询块的WHERE的子句中或HAVING的子句中的查询块称为子查询(或内层查询)。
上层的查询块称之为父查询(或外层查询)。


单行子查询:不向外部返回结果,或者只返回一行结果

--查询EMP表中薪资最高的那个员工的所有信息
/*
  1.确定数据来源  EMP
  2.确定需要显示的数据列  *
  3.找到薪资最高是多少
  4.根据这个薪资去匹配表中的数据
*/
SELECT MAX(E.SAL)
  FROM EMP E;
  
SELECT *
  FROM EMP 
 WHERE SAL = (SELECT MAX(E.SAL) FROM EMP E);

 

多行子查询:向外部返回零行、一行或者多行数据

--查询EMP表中每个部门最高薪资的那个员工信息
/*
  1.确定数据来源 EMP
  2.确定需要显示的数据列 *
  3.确定每个部门的最高薪资是多少
  4.根据部门编号去匹配最高薪资的那个员工信息
*/
SELECT MAX(B.SAL)
  FROM EMP B
 WHERE B.DEPTNO = 30;
 
SELECT A.*
  FROM EMP A
 WHERE A.SAL = 最高薪资
   AND A.DEPTNO = 部门编号;
   
SELECT A.*
  FROM EMP A
 WHERE A.SAL = (SELECT MAX(B.SAL) FROM EMP B WHERE A.DEPTNO = B.DEPTNO);

 

posted @ 2020-10-12 10:40  小碗吃不胖的  阅读(189)  评论(0编辑  收藏  举报