sql - 何时使用公共(public)表表达式 (CTE)

标签 sql sql-server tsql common-table-expression

我已经开始阅读有关通用表表达式的内容,但无法想到需要使用它们的用例。它们似乎是多余的,因为派生表也可以这样做。我有什么遗漏或不太理解的地方吗?有人可以给我一个简单的示例,说明常规选择、派生或临时表查询的限制,以说明 CTE 的情况吗?任何简单的例子将不胜感激。

最佳答案

举个例子,如果您需要多次引用/加入同一数据集,您可以通过定义 CTE 来实现。因此,它可以是代码重用的一种形式。

自引用的一个例子是递归:Recursive Queries Using CTE

有关令人兴奋的 Microsoft 定义 Taken from Books Online:

CTE 可用于:

  • 创建递归查询。欲了解更多信息,请参阅Recursive Queries Using Common Table Expressions.

  • 当不需要一般使用 View 时替代 View ;也就是说,您不必将定义存储在元数据中。

  • 启用按从标量子选择派生的列或不确定性或具有外部访问权限的函数进行分组。

  • 在同一语句中多次引用结果表。

关于sql - 何时使用公共(public)表表达式 (CTE),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4740748/

相关文章:

mysql - 如何查询另一个表中其他两个日期之间的日期

sql-server - bcp - 通过 xp_cmdshell 转储与 sp_oaMethod 安全性

sql-server - SQL Server varchar(max) 无法正常工作

sql - 如何在 SQL Server 中使用 JOIN 执行 UPDATE 语句?

sql - 单个 SQL 查询中的分组和聚合字段

JOIN 大表的 MySQL 查询优化

sql - 可以使用 DISTINCT 进行分区函数 COUNT() OVER

sql-server - 根据列查找日期范围

如果列值未知,SQL 行到列

sql - 在我的存储过程中使用 PRINT 有什么缺点吗?