跳到主要内容
跳到主要内容

公用表表达式(CTE)

公用表表达式(Common Table Expression)定义一个临时结果集,您可以在 SQL 语句的范围内多次引用。CTE 主要用于 SELECT 语句中。

要指定公用表表达式,请使用 WITH 具有一个或多个逗号分隔子句的子句。每个子条款都提供一个子查询,用于生成结果集,并将名称与子查询相关联。下面的示例定义名为的 CTE cte1cte2WITH 子句,并且是指在它们的顶层 SELECT 下面的 WITH 子句:

WITH
cte1 ASSELECT a,b FROM table1),
cte2 ASSELECT c,d FROM table2)
SELECT b,d FROM cte1 JOIN cte2
WHERE cte1.a = cte2.c;

在包含该 WITH子句 的语句中,可以引用每个 CTE 名称以访问相应的 CTE 结果集。

CTE 名称可以在其他 CTE 中引用,从而可以基于其他 CTE 定义 CTE。

CTE 可以引用自身来定义递归 CTE。递归 CTE 的常见应用包括分层或树状结构数据的序列生成和遍历。