描述
公共表表达式(CTE)定义了一个临时结果集,用户可以在 SQL 语句的范围内多次引用。CTE 主要用于 SELECT 语句。
语法
WITH common_table_expression [ , ... ]
其中
common_table_expression 定义为:expression_name [ ( column_name [ , ... ] ) ] [ AS ] ( query )
参数
子句/关键字 | 说明 |
expression_name | 为公共表表达式指定名称 |
query | 一个 SELECT 语句 |
示例
-- CTE 基本用法WITH t(x, y) AS (SELECT 1, 2)SELECT * FROM t WHERE x = 1 AND y = 2-- CTE 嵌套WITH t AS (WITH t2 AS (SELECT 1)SELECT * FROM t2)SELECT * FROM t-- CTE 在子查询中SELECT max(c) FROM (WITH t(c) AS (SELECT 1)SELECT * FROM t)-- CTE 在标量子查询中SELECT (WITH t AS (SELECT 1) SELECT * FROM t)-- 多个 CTEWITH t1 AS (SELECT 1 AS a), t2 AS (SELECT 2 AS b)SELECT * FROM t1, t2