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;
运行结果为: