何时使用通用表表达式(CTE)

我已经开始阅读有关公用表表达式的内容,无法想到需要使用它们的用例。它们似乎是多余的,因为可以对派生表执行相同的操作。我有什么想念的东西吗?有人可以通过常规选择查询,派生查询或临时表查询为我介绍CTE的局限性吗?任何简单的例子将不胜感激。



米琪卡哇伊
浏览 545回答 3
3回答

PIPIONE

一个示例,如果您需要多次引用/加入同一数据集,则可以通过定义CTE来进行。因此,它可以是一种形式的代码重用。自我引用的一个示例是递归:使用CTE的递归查询对于来自联机丛书的令人兴奋的Microsoft定义 :CTE可用于:创建一个递归查询。有关更多信息,请参见使用公用表表达式的递归查询。当不需要通用视图时,可以用它代替视图;也就是说,您不必将定义存储在元数据中。启用按标量子选择或不确定的或具有外部访问权限的函数派生的列进行分组的功能。在同一条语句中多次引用结果表。

慕斯709654

我用它们来分解复杂的查询,尤其是复杂的联接和子查询。我发现我越来越多地将它们用作“伪视图”,以帮助我了解查询的意图。我对它们的唯一抱怨是它们无法重复使用。例如,我可能有一个存储的proc,其中包含两个可以使用相同CTE的更新语句。但是CTE的“范围”仅是第一个查询。麻烦的是,“简单示例”可能真的不需要CTE!仍然非常方便。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server