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);