oracle中with的用法及用處

2021-06-23 02:46:08 字數 902 閱讀 2333

*****===

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 ...

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 ...