首頁 > 資料庫 > mysql教程 > oracle 基本语句学习 (三)之子查询

oracle 基本语句学习 (三)之子查询

WBOY
發布: 2016-06-07 15:30:39
原創
1207 人瀏覽過

1 子查询 ex: 查出 姓名, 其工资在平均工资之上 select ename,sal from emp where sal (select avg(sal) from emp) ; 2 见表子查询 查询每个部门中工资最高的人 . 直观方法 select ename,sal from emp where sal in (select max(sal) from emp group by dept

1 子查询

  ex:  查出 姓名, 其工资在平均工资之上

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


 2 见表子查询

     查询每个部门中工资最高的人 .

     直观方法   select ename,sal from emp  where  sal  in (select max(sal) from emp group by deptno) ;

                     这样的查询方式会出现一个错误, 假如 A部门最高薪水5000, 而A部门的p员工薪水3000, 却等于B部门的最高薪水, 那么员工也将显示出来;


    正确方法如下:

                       首先 , 可以发现 select max(sal) from emp group by deptno  能得到一张表 , 如下图所示

oracle 基本语句学习 (三)之子查询

                      oracle 基本语句学习 (三)之子查询


                            那么 只要在emp中找到部门 和薪水都与此表一致的员工即可.


               语句如下: 

                              1 select ename ,sal from emp

                               2 join (select max(sal)max_sal, deptno  from emp  group by deptno) t   //连接表

                               3 on( emp.sal=t.max_sal and emp.deptno=t.deptno) ;  // 连接条件


               oracle 基本语句学习 (三)之子查询

                           

                         

oracle 基本语句学习 (三)之子查询

oracle 基本语句学习 (三)之子查询

oracle 基本语句学习 (三)之子查询

oracle 基本语句学习 (三)之子查询

oracle 基本语句学习 (三)之子查询

oracle 基本语句学习 (三)之子查询

oracle 基本语句学习 (三)之子查询

oracle 基本语句学习 (三)之子查询

oracle 基本语句学习 (三)之子查询

oracle 基本语句学习 (三)之子查询

oracle 基本语句学习 (三)之子查询

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板