Oracle子查询

    xiaoxiao2024-12-23  4

    --子查询 --子查询返回一个值 --查询出工资和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)