Orcale之子查询的多种用法

Orcale之子查询的多种用法

作者:谢景 ,撰写时间:2019-3-27

子查询的定义:在一个操作之前进行查询,这个查询就是子查询。
也就是说,子查询就是一个查询,查询的结果可以是一张表,一条字段,一个值。
也就是说,子查询可以代替一张表,一个字段,一个值。

子查询必须写在()里面。
下面分析具体代替的方式。

1、代替一张表

select * from  (select * from emp)

上面 select * from emp查询结果是表结构,因此可以代替table 的位置
例如:select * from table 中 ,子查询select * from emp可以代替table

2、代替一个字段

select * from emp where deptno in (select deptno from emp where empno='7902')

上面(select deptno from emp where empno=‘7902’)查询结果是一个字段的值 ,因此可以代替字段 的位置
例:select * from emp where deptno in (1, 2,3)中,子查询select deptno from emp where empno='7902’可以代替(1, 2,3)的位置

3、代替一个值

select * from emp where deptno=(select 20 from emp where rownum=1 )

上面select 20 from emp where rownum=1查询结果是一个具体的数值20,因此可以代替数值 的位置
例:select * from emp where deptno=20中,子查询select 20 from emp where rownum=1 可以代替数值20的位置

子查询在其他操作中的作法:
4、新增

insert into emp  select * from emp where empno='7369'

5、修改

update emp set deptno=(select deptno from emp where empno='7369')
where empno='7368'

6、删除

delete from emp where deptno=(select deptno from emp where empno='7369')

7、在case 中的用法

在case中写子查询中,子查询结果必须为字段或单个数值

select 
   case 
     when (select count(*) from emp) >0  then '有数据'
       else '无数据'
   end  text
 from emp where empno='7369'

猜你喜欢

转载自blog.csdn.net/qq_43439125/article/details/88838271
今日推荐