SQL> WITH  
Q1 AS (SELECT 3 + 5 S FROM DUAL),  
    Q2 AS (SELECT 3 * 5 M FROM DUAL),  
    Q3 AS (SELECT S, M, S + M, S * M FROM Q1, Q2)  
SELECT * FROM Q3;
结果:
S M S+M S*M  
---------- ---------- ---------- ----------  
8 15 23 120
当查询中多次用到某一部分时,可以用Oracle with语句创建一个公共临时表。因为子查询在内存临时表中,避免了重复解析,所以执行效率会提高不少。临时表在一次查询结束自动清除。 说起WITH 语句,除了那些第一次听说WITH 语句的人,大部分人都觉得它是用来做 递归查询的。其实那只是它的一个用途而已,它的本名正如我们标题写的那样,叫做:公共 表表达式(Common Table Expression),从字面理解,大家觉得它是用来干嘛的呢? 其实,它是用来定义临时集合的。 WITH可以定义多个结果集,中间用逗号分隔。 (这种写法更加符合普通思维的逻辑,写出来的代码更加容易理解) WITH 语句是为复杂的查询而设计的