with...as ...語句用於將查詢語句定義爲某個名稱,並可以再後續的查詢塊中引用。當查詢名稱與已有的表名重複時,with定義的查詢塊優先級高。with語句可以定義多個查詢,中間使用逗號分隔。常用於定於需要反覆查詢某些表的視圖中,使用with語句把需要查詢的表定義爲查詢快再使用比直接在視圖中反覆的查詢表效率要高一些。個人覺得with..as..的作用是把會反覆使用的表字段在查詢塊中預先查詢出來,爲這個查詢塊定義一個名稱,作用類似於一個臨時表。
例子:
create or replace view test_with_as as --定義with..as..查詢塊 with dept_info as (select dept_name,dept_id from dept), employee_info as (select employee_name, employee_id, dept_id, salary from employee) --調用with..as..中的查詢塊 select d.*,t.* from dept_info d inner join employee_info e on d.dept_id=e.dept_id;