200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > oracle with as内存 oracle中with as子句的用法小结(转)

oracle with as内存 oracle中with as子句的用法小结(转)

时间:2023-02-07 22:11:44

相关推荐

oracle with as内存 oracle中with as子句的用法小结(转)

with

as也叫做子查询部分,首先定义一个sql片段,该sql片段会被整个sql语句所用到,为了让sql语句的可读性更高些,作为提供数据的部分,也常常用在union等集合操作中。with

as最大的好处就是适当的提高代码可读性,而且如果with子句在后面要多次使用到,这可以大大的简化SQL。

关于with as子句的用法,下面两个例子看看就OK了:

--例子1

WITHdept_costsAS

(SELECTd.department_name,SUM(e.salary)ASdept_total

FROMemployeese,departmentsd

WHEREe.department_id=d.department_id

GROUPBYd.department_name),

avg_costAS

(SELECTSUM(dept_total)/COUNT(*)ASdept_avgFROMdept_costs)

SELECT*

FROMdept_costs

WHEREdept_total>(SELECTdept_avgFROMavg_cost)

ORDERBYdepartment_name;

--例子2

WITHsql1AS

(SELECTto_char(a)s_nameFROMtest_tempa),

sql2AS

(SELECTto_char(b)s_name

FROMtest_tempb

WHERENOTEXISTS(SELECTs_nameFROMsql1WHERErownum=1))

SELECT*

FROMsql1

UNIONALL

SELECT*

FROMsql2

UNIONALL

SELECT'norecords'

FROMdual

WHERENOTEXISTS(SELECTs_nameFROMsql1WHERErownum=1)ANDNOTEXISTS(SELECTs_name

FROMsql2

WHERErownum=1);

在oracle数据库开发中有时候要对临时数据的一些处理,但是这些数据又不想放到table里面而且cursor的灵活性又不是很好。这个时候可以考虑with as。

with as是在内存中建立一个临时的table。可以对这个temp table里面的数据进行整理。

得到一个temp table就可以对table的记录进行操作了,例如求平均数。

还可以和现有的table进行查询。

由于with as是内存中的table所以还是比较快的。如果数据比较大的时候建议不要用with as这样的话变得很慢。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。