为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

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

3 回答

?
PIPIONE

TA贡献1829条经验 获得超9个赞

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

自我引用的一个示例是递归:使用CTE的递归查询

对于来自联机丛书的令人兴奋的Microsoft定义 :

CTE可用于:

  • 创建一个递归查询。有关更多信息,请参见使用公用表表达式的递归查询。

  • 当不需要通用视图时,可以用它代替视图;也就是说,您不必将定义存储在元数据中。

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

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


查看完整回答
反对 回复 2019-11-05
?
慕斯709654

TA贡献1840条经验 获得超5个赞

我用它们来分解复杂的查询,尤其是复杂的联接和子查询。我发现我越来越多地将它们用作“伪视图”,以帮助我了解查询的意图。

我对它们的唯一抱怨是它们无法重复使用。例如,我可能有一个存储的proc,其中包含两个可以使用相同CTE的更新语句。但是CTE的“范围”仅是第一个查询。

麻烦的是,“简单示例”可能真的不需要CTE!

仍然非常方便。


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 518 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信