oricle-子查询- in allany

mac2024-03-13  35

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表,只检索那些(只要比子查询的结果集的任意一行大)就行的数据行,所以上面的代码也相当于:

最新回复(0)