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