Oracle——子查询
生活随笔
收集整理的這篇文章主要介紹了
Oracle——子查询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
4.子查詢
子查詢指一個查詢語句嵌套在另一個查詢語句內部的查詢
1.from后面的子查詢
select ename, mnamefrom (select e.*, d.empno, d.ename mname, d.job, d.sal, d.deptno from emp e, emp d where e.mgr = d.empno(+));2.where后面的子查詢
(1)單行子查詢
單行子查詢:子查詢的sql語句只查出一條記錄
–查詢工資大于10號部門平均工資的員工信息
select * from emp where sal>(select avg(sal) from emp where deptno=10);(2)多行子查詢
多行子查詢:子查詢的sql語句查出若干條記錄
in、not in、exists、not exists、all、any
**1)用單行子查詢
–查詢20號部門的最高工資
select max(sal) from emp where deptno=20; select * from emp where sal>( select max(sal) from emp where deptno=20);2)>all
–20號部門的員工工資是一個集合
select sal from emp where deptno=20; select * from emp where sal>all(select sal from emp where deptno=20);3.exists、not exists
exists:后面跟子查詢,如果子查詢能查出數據,那么條件是真的,如果子查詢查不出結果,條件不成立
select * from dept d where exists(select * from emp where deptno=d.deptno);–查詢沒有有員工的部門信息
select * from dept d where not exists(select * from emp where deptno=d.deptno);4.having后面的子查詢
–查詢各個部門的部門編號和員工人數,要求部門的平均工資大于30號部門的平均工資
select deptno,count(*),avg(sal) from emp group by deptno having avg(sal)>1500;–查詢30號部門的平均工資
select avg(sal) from emp where deptno=30;select deptno,count(*) from emp group by deptno having avg(sal)>(select avg(sal) from emp where deptno=30);5.select 和from 之間的子查詢
select empno,ename,(select 1 from dual) from emp;
注意:select 和from之間的子查詢,子查詢的結果只能是單行單列
原始排序:
select e.,(select count() from emp where sal>e.sal) from emp e order by 9;
總結
以上是生活随笔為你收集整理的Oracle——子查询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Carbon —— 代码分享利器
- 下一篇: 打包tfrecord文件,并读取