oracle with as内存,oracle中with as子句的用法小结(转)
with
as也叫做子查詢部分,首先定義一個sql片段,該sql片段會被整個sql語句所用到,為了讓sql語句的可讀性更高些,作為提供數據的部分,也常常用在union等集合操作中。with
as最大的好處就是適當的提高代碼可讀性,而且如果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數據庫開發中有時候要對臨時數據的一些處理,但是這些數據又不想放到table里面而且cursor的靈活性又不是很好。這個時候可以考慮with as。
?
with as是在內存中建立一個臨時的table。可以對這個temp table里面的數據進行整理。
得到一個temp table就可以對table的記錄進行操作了,例如求平均數。
還可以和現有的table進行查詢。
由于with as是內存中的table所以還是比較快的。如果數據比較大的時候建議不要用with as這樣的話變得很慢。
總結
以上是生活随笔為你收集整理的oracle with as内存,oracle中with as子句的用法小结(转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 赵明:荣耀“折叠屏+全能”双旗舰战略在海
- 下一篇: 一加Ace 2V官宣!第三款“很不温和”