oracle(20)_SQL_子查询
SQL
子查询
子查询
● 子查询
- 在一个查询的内部还包括另一个查询,则此查询称为子查询。SQL 的任何位置都可以加入子查询。
范例:查询比 7654 工资高的雇员
- 分析:查询出 7654 员工的工资是多少,把它作为条件
- 示例图:
注意:
所有的子查询必须在 “()” 中编写。
子查询在操作中有三类:
① 单列子查询:返回的结果是一列的一个内容
② 单行子查询:返回多个列,有可能是一个完整的记录
③ 多行子查询:返回多条记录
范例:查询出比雇员 7654 的工资高,同时从事和 7844 的工作一样的员工
- 示例图:
范例:要求查询每个部门的最低工资和最低工资的雇员和部门名称
- 示例图:
在返回多条记录的子查询可以把它的结果集当做一张表,给起个别名, 如图中的 a。
范例:查询出来所有和每个部门最低工资的员工工资相等的人
- 示例图:
以上操作完整源码:
--查询比7654工资高的雇员
select *
from emp t
where t.sal > (select e.sal from emp e where e.empno = 7654);
--查询出比雇员 7654 的工资高,同时从事和 7844 的工作一样的员工
select *
from emp t
where t.sal > (select e.sal from emp e where e.empno = 7654)
and t.job = (select e.job from emp e where e.empno = 7844)
--要求查询每个部门的最低工资和最低工资的雇员和部门名称
select t.*, d.dname
from emp t,
(select min(e.sal) minsal, e.deptno from emp e group by e.deptno) a,
dept d
where t.sal = a.minsal
and t.deptno = a.deptno
and t.deptno = d.deptno;
--查询出来所有和每个部门最低工资的员工工资相等的人
select *
from emp t
where t.sal in (select min(e.sal) from emp e group by e.deptno)
如有错误,欢迎指正!