日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時間:2023/12/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 oracle with as内存,oracle中with as子句的用法小结(转) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

with

as也叫做子查詢部分,首先定義一個sql片段,該sql片段會被整個sql語句所用到,為了讓sql語句的可讀性更高些,作為提供數(shù)據的部分,也常常用在union等集合操作中。with

as最大的好處就是適當?shù)奶岣叽a可讀性,而且如果with子句在后面要多次使用到,這可以大大的簡化SQL。

關于with as子句的用法,下面兩個例子看看就OK了:

--?例子1

WITH?dept_costs?AS

(SELECT?d.department_name,?SUM(e.salary)?AS?dept_total

FROM?employees?e,?departments?d

WHERE?e.department_id?=?d.department_id

GROUP?BY?d.department_name),

avg_cost?AS

(SELECT?SUM(dept_total)?/?COUNT(*)?AS?dept_avg?FROM?dept_costs)

SELECT?*

FROM?dept_costs

WHERE?dept_total?>?(SELECT?dept_avg?FROM?avg_cost)

ORDER?BY?department_name;

--?例子2

WITH?sql1?AS

(SELECT?to_char(a)?s_name?FROM?test_tempa),

sql2?AS

(SELECT?to_char(b)?s_name

FROM?test_tempb

WHERE?NOT?EXISTS?(SELECT?s_name?FROM?sql1?WHERE?rownum?=?1))

SELECT?*

FROM?sql1

UNION?ALL

SELECT?*

FROM?sql2

UNION?ALL

SELECT?'no?records'

FROM?dual

WHERE?NOT?EXISTS?(SELECT?s_name?FROM?sql1?WHERE?rownum?=?1)?AND?NOT?EXISTS?(SELECT?s_name

FROM?sql2

WHERE?rownum?=?1);

在oracle數(shù)據庫開發(fā)中有時候要對臨時數(shù)據的一些處理,但是這些數(shù)據又不想放到table里面而且cursor的靈活性又不是很好。這個時候可以考慮with as。

?

with as是在內存中建立一個臨時的table??梢詫@個temp table里面的數(shù)據進行整理。

得到一個temp table就可以對table的記錄進行操作了,例如求平均數(shù)。

還可以和現(xiàn)有的table進行查詢。

由于with as是內存中的table所以還是比較快的。如果數(shù)據比較大的時候建議不要用with as這樣的話變得很慢。

總結

以上是生活随笔為你收集整理的oracle with as内存,oracle中with as子句的用法小结(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。