SQL--4--查--子查询(where、from、select)


 一.定义

  1.子查询定义:

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

  2.子查询可以出现在哪里?

  

二.where子句中的子查询(单步合并)

  总结:查询条件分步骤,然后合并

  1.已知最低工资为800,现在需要完成以下查询:

   Q:找出比最低工资高的员工的姓名和工资。

   A:因为where子句中不能直接使用分组函数,所以:select ename,sal from emp where sal > min(sal)是错误的

    应为:

    Step1:查询最低工资:select min(sal) from emp;

    Step2:找出薪资大于800的人的信息:select ename,sal from emp where sal > 800;

    Step3:合并语句:select ename,sal from emp where sal > (select min(sal) from emp);

    

三.from子句中的子查询(表单拟存在,表单连接)

  总结:from后子查询的查询结果作为临时表,和查询表进行连接

  1.现在需要完成以下查询:

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

   A:

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

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

    

    Step2:把以上的查询结果就当做一张真实存在的表t,将t表和s表进行表连接:

    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;

    

    Step3:最终结果:

    

四.select子句中的子查询(唯一性嵌套)——理解即可

  总结:对于select后面的子查询来说,这个子查询只能一次返回1条结果,多于1条,就报错

  1.现在需要完成以下查询:

   Q:找出每个员工的部门名称,要求显示员工名,部门名。

   A:

    语句:

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

    from  emp e;

    最终结果:

    


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM