Oracle子查询

--子查询
--子查询返回一个值
--查询出工资和scott一样的员工信息
select * from emp where sal=
(select sal from emp where ename='SCOTT')

上面语句建议用 in 因为此时的EMP表中就一个名字叫SCOTT的员工,所以此时的子查询返回一个值,但是如果现实中公司有两个名字一样的员工,此时子查询返回的就是一个集合了,再用等号就会出错,当然如果子查询中的条件如果是主键的话能确定返回一个值,用外面的条件用 = 也没错的,保险起见还用用 in ,如下:

select * from emp where sal in
(select sal from emp where ename='SCOTT')

在这里插入图片描述

--子查询返回一个集合
--查询出工资和10号部门任意一员工一样的员工信息
select * from emp where sal in
(select sal from emp where deptno=10)

在这里插入图片描述

–子查询永远先执行里面,里面一执行,里面别名就会起作用,外面条件就可以使用
–别名不能用作条件仅限于非子查询

--子查询返回一张表
--查询出每个部门最低工资,和最低工资员工姓名,和该员工所在部门名称
--1.先查询出每个部门最低工资得到一张表
select deptno,min(sal) msal
from emp
group by deptno;
--2.三表联查,得到最终结果
--子查询永远先执行里面,里面一执行,里面别名就会起作用,外面条件就可以使用
--别名不能用作条件仅限于非子查询
select t.msal,e.ename,d.deptno
from (select deptno,min(sal) msal
      from emp
      group by deptno) t,emp e,dept d   
where t.deptno=e.deptno
and t.msal=e.sal
and e.deptno=d.deptno;

1.先查询出每个部门最低工资得到一张表
在这里插入图片描述
2.三表联查,得到最终结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值