子查询

3、子查询?  

  3.1、子查询:select语句中嵌套select语句,被嵌套的select语句称为子查询。

  3.2、子查询都可以出现在哪里?

    select

      ..(select)

    from

      ...(select)

    where

      ...(select)

  3.3、where子句中的子查询

  案例:找出比最低工资高的员工姓名和工资?

   select ename,sal from emp where 

  思路:

    第一步:查询最低工资是多少

      select min(sal) from emp;

    第二步:找出>800的

      select ename,sal from emp where sal > 800;

    第三步:合并

      select ename,sal from emp where sal > (select min(sal) from emp);

  3.4、from子句中的子查询

    注意:from后面的子查询,可以将子查询的查询结果当做一张临时表。(技巧)

    案例:找出每个岗位的平均工资的薪资等级。

    第一步:找出每个岗位的平均工资(按照岗位分组求平均值)

      select job,avg(sal) from emp group by job;//t表

    第二步:把上面查询结果当做一张表,t表和s表进行表连接,t表avg(sal) between s.losal and s.hisal;

      select  t.*,s.grade from t join salgrade s on t.avg(sal) between s,losal and s.hisal;

    第三步:合并

      select  t.*,s.grade

       from

        (select job,avg(sal) as avgsal from emp group by job) t

      join

        salgrade s

      on

        t.avgsal between s,losal and s.hisal;

   3.5、select后面出现的子查询(这个内容不需要掌握,了解即可!!!)

  案例:找出每个员工的部门名称,要求显示员工名,部门名?

      select e.ename,e.deptno,(select d.dname from dept d where e.deptno = de.deptno) as dname from emp e;

    select e.ename,e.deptno,(select dname from dept) as dname from emp e;//没加select嵌套条件,

    注意:对于select后面子查询,该子查询只能一次返回1条结果,多于一条会报错

      

posted @ 2022-01-22 21:31  doremi429  阅读(45)  评论(0编辑  收藏  举报