with...as ...语句用于将查询语句定义为某个名称,并可以再后续的查询块中引用。当查询名称与已有的表名重复时,with定义的查询块优先级高。with语句可以定义多个查询,中间使用逗号分隔。常用于定于需要反复查询某些表的视图中,使用with语句把需要查询的表定义为查询快再使用比直接在视图中反复的查询表效率要高一些。个人觉得with..as..的作用是把会反复使用的表字段在查询块中预先查询出来,为这个查询块定义一个名称,作用类似于一个临时表。
例子:
|
1
2
3
4
5
6
7
8
9
10
|
create
or
replace
view
test_with_as
as
--定义with..as..查询块
with
dept_info
as
(
select
dept_name,dept_id
from
dept),
employee_info
as
(
select
employee_name, employee_id, dept_id, salary
from
employee)
--调用with..as..中的查询块
select
d.*,t.*
from
dept_info d
inner
join
employee_info e
on
d.dept_id=e.dept_id;
|
本文转自 天黑顺路 51CTO博客,原文链接:http://blog.51cto.com/mjal01/1975519,如需转载请自行联系原作者