with as語句是一個子查詢,使用它可以增強sql的可讀性,當查詢中多次用到某一部分時,可以使用該語句創建一個公共的臨時表並將結果存儲在用戶臨時表空間中,可以多次引用避免了重複解析,從而增強了性能,執行效率會提高不少。臨時表在一次查詢結束後自動清除。
一起來看一個簡單的例子:
WITH CS1 AS
(SELECT 1 + 2 L1 FROM DUAL),
CS2 AS
(SELECT 2 * 3 L2 FROM DUAL),
CS3 AS
(SELECT L1, L2, L1 + L2, L1 * L2 FROM CS1, CS2)
SELECT * FROM CS3;
運行結果爲: