CTE(通用表表达式)SQL

17 Mar 2025 | 阅读 2 分钟

通用表表达式(CTE)被引入 SQL 以简化许多类别的结构化查询语言(SQL),适用于不合适的派生表。它是在 2005 年 SQL SERVER 版本中引入的。

通用表表达式(CTE)是一个结果集,我们使用 SELECTINSERT、UPDATEDELETE 语句引用它。在 SQL 2008 中,我们为独特的 MERGE 语句添加了一个 CTE

如何在 T-SQL 中使用 CTE?

使用通用文本表达式的方法是在 SELECT、INSERT、UPDATE、DELETE 或 MERGE 语句之前添加“WITH”子句。WITH 子句包含一个或多个 CTE,它们之间用逗号分隔。

当我们引用任何表时,会生成 CTE。当我们运行特定语句时,CTE 结果集对任何语句都不可访问。

创建递归表表达式

递归 CTE 用于处理分层数据。表中分层数据的一个示例是组中的学生列表。对于每个学生,计数器会生成一个 ReferenceID 和一个 NAME。ReferenceID 引用自身,就像递归表中的员工 ID。我们使用 CTE 来显示员工数据库中的职位。

如果 CTE 创建错误,它会进入无限循环。

为了防止无限循环,将在 INSERT、DELETE、UPDATE、SELECT 或 MERGE 语句的 OPTION 子句中添加 MAXRECURSION

使用以下代码创建表

创建 Employee 表后,将创建一个 SELECT 语句,该语句前面带有一个 WITH 子句,其中包含一个名为 cteReports 的 CTE。

是生成不一致结果集的重要工具,并在 SELECT、UPDATE、INSERT、MERGEDELETE 语句中检索。


下一主题SQL 教程