Skip to content

WITH

功能描述

WITH查询被称为CTE(Common Table Expression,公共表表达式)。WITH查询方式可以认为是存在于查询中的临时表,生命周期随查询消亡存在,可以被看作为单个SQL语句(实际是单个或多个查询组合而成)。

如果一个查询语句需要重复使用则可以使用WITH实现SQL重用。CTE后面也可以跟其他的CTE,但只能使用一个WITH,多个CTE中间用英文逗号分隔,说明WITH查询可被WITH查询引用。若WITH中未指定列且返回中带系统默认设置的列,则数据库会自动补齐列名如EXPR1,随后依次递增。

语法格式请参见查询语法章节。

示例

  • 示例1
    单个WITH语句。

    sql
    SQL> WITH with1 AS (SELECT 'abc' FROM dual) SELECT * FROM with1;
    
    EXPR1 | 
    ------------------------------------------------------------------------------
    abc|
  • 示例2
    多个WITH语句。

    sql
    SQL> WITH with1 AS (SELECT 'one' FROM dual),with2 AS (SELECT 'two' FROM dual) SELECT * FROM with1 UNION SELECT * FROM with2;
    
    EXPR1 | 
    ------------------------------------------------------------------------------
    one|
    two|