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

如何为具有多个父项的子项创建SQL Server CTE以返回父子记录

为了在 SQL Server 中创建一个 CTE 以返回具有多个父项的子项记录,您可以使用以下步骤:

  1. 首先,创建一个临时表,其中包含所有父项和子项的关系。
  2. 然后,使用递归 CTE 查询来获取所有子项的父项。

以下是一个示例:

代码语言:sql
复制
-- 创建临时表,包含父项和子项的关系
CREATE TABLE #ParentChild
(
    ParentID INT,
    ChildID INT
)

-- 插入数据
INSERT INTO #ParentChild (ParentID, ChildID)
VALUES (1, 2), (1, 3), (2, 4), (2, 5), (3, 6), (3, 7)

-- 使用递归 CTE 查询所有子项的父项
;WITH RecursiveCTE (ParentID, ChildID, Level)
AS
(
    SELECT PC.ParentID, PC.ChildID, 1 AS Level
    FROM #ParentChild PC
    WHERE PC.ParentID IS NOT NULL

    UNION ALL

    SELECT R.ParentID, PC.ChildID, R.Level + 1 AS Level
    FROM #ParentChild PC
    INNER JOIN RecursiveCTE R ON PC.ParentID = R.ChildID
)
SELECT * FROM RecursiveCTE
ORDER BY ParentID, ChildID

-- 删除临时表
DROP TABLE #ParentChild

在这个示例中,我们首先创建了一个名为 #ParentChild 的临时表,其中包含父项和子项之间的关系。然后,我们使用递归 CTE 查询来获取所有子项的父项。最后,我们删除了临时表。

请注意,这个示例仅用于演示目的,您可能需要根据您的实际数据结构和需求进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券