WITH
功能描述
WITH
查询被称为CTE(Common Table Expression,公共表表达式)。WITH查询方式可以认为是存在于查询中的临时表,生命周期随查询消亡存在,可以被看作为单个SQL语句(实际是单个或多个查询组合而成)。
如果一个查询语句需要重复使用则可以使用WITH实现SQL重用。CTE后面也可以跟其他的CTE,但只能使用一个WITH,多个CTE中间用英文逗号分隔,说明WITH查询可被WITH查询引用。若WITH中未指定列且返回中带系统默认设置的列,则数据库会自动补齐列名如EXPR1
,随后依次递增。
语法格式请参见查询语法章节。
示例
示例1
单个WITH语句。sqlSQL> WITH with1 AS (SELECT 'abc' FROM dual) SELECT * FROM with1; EXPR1 | ------------------------------------------------------------------------------ abc|
示例2
多个WITH语句。sqlSQL> WITH with1 AS (SELECT 'one' FROM dual),with2 AS (SELECT 'two' FROM dual) SELECT * FROM with1 UNION SELECT * FROM with2; EXPR1 | ------------------------------------------------------------------------------ one| two|