with a as (select * from user where username like '張%')
,b as (select * from role where rolename = '03')
,c as (select * from user_to_role? t,a ,b ?where t.userid=a.userid and t.roleid=b.roleid)
select a.* from? a
a/b/c用于一個語句中某些中間結果放在臨時表空間的SQL語句
臨時表是會話結束就自動被PGA清除
都能寫,但執行計劃不同的。當有多個相似子查詢的時候,用with寫公共部分,
因為子查詢結果在內存臨時表中執行效率相對而言比較快。