首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

来自Azure SQL数据库上的递归

介绍

递归CTE是一种反复引用查询的方法,直到被认为是端点或终止检查(如所称)。值得注意的是,本文演示的示例将在Azure SQL数据库上完成。

使用递归CTE有一定的结构,如下所示:

图1:递归CTE结构

有一个初始查询被称为“锚点查询”,在上图中,该查询选择数字“1”作为“n”。有一个使用“UNION ALL”连接在一起的辅助查询。辅助查询,也称为“递归成员”(如上图所示)是连续运行的查询,直到递归成员到达终止点为止(也显示在上面的图像上)。

场景

例如:某公司总部人力资源部员工,需要向分公司经理询问员工的进展情况,以便了解现有员工的能力,能否胜任自己的岗位,从而了解该公司是否需要招收更多的员工,所以想要找出谁在管理员工。

解决方案

如上所述,示例是在Azure SQL数据库上完成的。所以,让我们来解决这个问题。这个演示被广泛用于展示递归CTE的用例。

图 2:数据集

以上是我们将要使用的数据集,以及我们将用于构建递归 CTE 的数据集。因此,在此示例中,我们可以看到有 2 条记录没有为"ReportsTo"列填充值,我们将假定它们是经理。

为了构建递归 CTE,我们将首先选择"ReportsTo"等于 NULL 的记录。

上图显示的将是递归CTE的锚定成员,如图1所示。这将是为递归成员设置基础的初始查询。在定位查询和递归之间,使用了“UNION ALL”联接,如下所示:

接下来是递归成员,它将连续运行,直到达到终止检查为止。现在让我们创建接下来的2个步骤,其中包括递归成员和终止检查(可以在查询的内部联接中看到)。

如您所见,上述代码已包装在"WITH StaffHierarchy AS"中,该代码调用递归 CTE,或者为此调用CTE。

最后,通过从CTE本身选择来完成代码,以展示递归CTE的结果。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210112A0BF2C00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券