你可以查询CTE,即common_table_expression,创建个临时表。
用途:1,以前的子查询可以用它代替了,看上去很明了;2,也即他的优点,可以递归调用:select uinon all select cte
用法你可以F1。
注意:1,一般我们写 ;with cte as , 因为若他不是批处理的开始则加;分号。
2,一个with中 不同的表用,逗号分开,如
;with cet1 as ()
,cte2 as()
cte3 as()
with
wd as (select did,arg(salary) 平均工资 from work),
em as (select emp.*,w.salary from emp left join work w on emp.eid = w.eid);
select * from wd,em where wd.did =em.did and wd.平均工资>em.salary;
其实就是把查询结果放入一个临时表中,然后再通过查询语句从临时表中查询结果
是给现有的字段名另指定一个别名的意思,比如:
select
username
as
用户名,password
as
密码
from
users
补充:比如其中的一个好处是:当字段名是英文或拼音缩写时,采用汉字替代之后可以给阅读带来方便
如下:
[TEST@ORA1] SQL>with cr as(
2 select * from tab)
3 select * from cr;
TNAME TABTYPE CLUSTERID
------------------------------ ------- ----------
A TABLE
TEST TABLE
详细的说明请参照:
http://blog.163.com/wudataoge/blog/static/80073886200961652022389/
---
以上,希望对你有所帮助。
SQL> with test as(
2 select 1 a,2 b from dual
3 union
4 select 2 a,4 b from dual
5 )
6 select * from test;
A B
---------- ----------
1 2
2 4