原文出處:
*****===
with
*****===
用於乙個語句中某些中間結果放在臨時表空間的sql語句
如with channel_summary as (
select channels.channel_desc, sum(amount_sold) as channel_total
from sales, channels
where sales.channel_id = channels.channel_id
group by channels.channel_desc
)select channel_desc, channel_total
from channel_summary
where channel_total > (
select sum(channel_total) * 1/3
from channel_summary);
channel_desc channel_total
-------------------- -------------
direct sales 312829530
channel_summary表就是with生成的中間表
1: 這個臨時表空間channel_summary 什麼時候清除呢?是乙個會話結束自動消失嘛?
臨時表在會話結束就自動被pga清除
2:就這一功能來說,子查詢就可以達到啊,為什麼要用with呢? 用with有什麼好處,不會僅僅是 ...
都能寫,但執行計畫不同的。當有多個相似子查詢的時候,用with寫公共部分,因為子查詢結果在記憶體臨時表中,執行效率當然就高啦。
如果你後面需要不止一次地引用這個結果,那麼with就會大大提高效率。
**的可讀性好
oracle中with的用法及用處
with 用於乙個語句中某些中間結果放在臨時表空間的sql語句 如with channel summary as select channels.channel desc,sum amount sold as channel total from sales,channels where sales...
oracle中的number型別用法及舉例
一 number與int,float等資料型別的區別 oracle本沒有int型別,為了與別的資料庫相容,新增了int型別作為number型別的子集。1 int型別只能儲存整數 2 number可以儲存浮點數,也可以儲存整數 二 number型別的用法 number表示說明 number p,s 宣...
oracle中的number型別用法及舉例
size large b 一 number與int,float等資料型別的區別 b size size medium oracle本沒有int型別,為了與別的資料庫相容,新增了int型別作為number型別的子集。1 int型別只能儲存整數 2 number可以儲存浮點數,也可以儲存整數 size ...