ORACLE 子查询

--子查询
--查询中再嵌套一个查询
--内查询 外查询
    --比SIMITH 工资高的人信息
select * from emp where sal>(select sal from emp 
                        where ename ='SMITH'
                        )
                        
--内查询要在外查询之前执行
--内查询的结果是要被外查询使用
--内查询一定要包含在括号内 放在 比较运算符的右侧
--内查询里面一般不使用order by




select * from emp where deptno=
(select deptno from emp where ename='JONES') and ename not in('JONES')--and ename <>'JONES'
--子查询 分类   单行子查询  多行子查询
--子查询  返回值是空




--内查询  返回为空  外查询 也是空




--内查询  返回一行             单行子查询
       --使用的单行比较运算符
       --= > < <=  >= <>
       
       
--例 查询ALLEN部门中比CLARK工资高的人的名字 工资


select ename,sal from emp where sal>(select sal from emp where ename='CLARK')
and deptno=(select deptno from emp where ename='ALLEN')


--所有员工中 比公司平均工资要高的人
--在子查询中可以使用分组函数


select * from emp where sal>(select avg(sal) from emp )




--内查询返回的 结果为多行
--多行比较运算符
-- in 满足其中一个即可
--any 和子查询中返回结果的任意一个比较
--all 和子查询中返回的所有的结果都进行比较  全部符合才可


--查询 比30部门中所有人(任意一人)工资都要高的 
--其他部门的信息(名字,工资)


select ename,sal from emp 
where sal > all(select sal from emp where deptno=30)and deptno <> 30


select * from emp
--1、列出受雇日期早于其直接上级的所有员工
select e1.ename from emp e1,emp e2
select ename from emp e1 where e1.hiredate < (select e2.hiredate from emp e2 where e1.mgr=e2.empno)
--2、列出在部门'SALES'中工作的员工姓名
select ename,dname from emp e,dept d where e.deptno=d.deptno and dname='SALES'


select ename
--3、查询和姓名中包含字母u的员工在相同部门的员工号和姓名
select empno,ename from emp 
where deptno in (select deptno from emp where ename like'%U%') and ename not like '%U%'
--4、查询直接上级是king的员工和工资
select e1.ename,e1.sal from emp e1,emp e2 where e1.mgr=e2.empno and e1.ename='King'
select ename,sal from emp where
mgr in (select empno from emp where ename='KING')


--5、查询各部门中工资比
--本部门平均工资高的
--员工的员工号,姓名和工资
--分组查询
select empno,ename,sal from emp e1 where sal>(
select avg(sal) from emp e2 where e1.deptno=e2.deptno group by deptno)









  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值