oricle-子查询- in all any

1、单行子查询
  select   * from emp
  where    sal > (select  sal  from emp where empno=7566)

2、子查询空值\多值问题
如果子查询未返回任何行,则主查询不会返回任何结果。
(空值)select * from emp where sal>(select sal from where empno=8888)
如果子查询返回单行结果,则为单行子查询,可以在主查询中对其使用相应的单行记录比较运算符。
(正常) select * from emp where sal>(select sal from where empno=7566)
如果子查询返回多行结果,则为多行子查询,此时不允许对其使用单行记录比较运算符。
(多值)select * from emp where sal >(select avg(sal) from emp group by deptno); //非法

3、多行子查询
1、 in
用等号表示1对1,in表示一个范围,用来处理子查询返回多条记录
select * from emp where job in
(select distinct job from emp where deptno=10) --这里的select
2、all
虽然in能解决多行等号的问题,但是要和子查询结果中字段比较大小呢,下面用操作符来解决。
select * from emp where sal>
all (select sal from emp where deptno=30) --这里的select查询返回多行记录
3、 any

select * from emp where sal>

any (select sal from emp where deptno=30) --这里的select查询返回多行记录
这段代码表示:检索出emp表,只检索那些(只要比子查询的结果集的任意一行大)就行的数据行,所以上面的代码也相当于:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值