CTE(Common Table Expression)

最近更新时间:2026-05-20 14:11:22

我的收藏

描述

公共表表达式(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)

-- 多个 CTE
WITH t1 AS (SELECT 1 AS a), t2 AS (SELECT 2 AS b)
SELECT * FROM t1, t2