我正在尝试使用SQL Server中的CTE,但在让以下场景正常工作方面遇到了瓶颈。我有一个类似于这样的层次结构表:
Node(ID:439)
Node(ID:123)
Node(ID:900)
Node(ID:56)
Node(ID:900)
预期结果:
NodeID ParentNodeID
439 0
123 439
900 123
56 439
900 56
基本上,我们有一个父子层次结构表,但有一个微妙的区别。每个子项可能有多个父项。我已经研究了许多关于创建CTE返回父子记录的博客文章和StackOverflow帖子,但它们并没有返回孩子的所有父项,只返回找到的第一个。
这是我尝试过的一个示例CTE:
WITH Hierarchy(NodeID, ParentNodeID)
AS
(
SELECT
T1.NodeID,
T1.ParentNodeID
FROM
ParentChildTable T1
WHERE
T1.NodeID = 439
UNION ALL
SELECT
T1.NodeID,
T1.ParentNodeID
FROM
Heirarchy T1
INNER JOIN Heirarchy TH ON TH.NodeID = T1.ParentNodeID
)
(注:由于隐私问题,上述CTE中表名和列名已更改。)
上述CTE运行良好,它找到了从ID:439开始的所有父子记录,但它只找到了项目ID:900的一个父项,尽管它有两个父项。
请问是否可以使用CTE来实现此功能,或者是否有其他SQL方法可以实现?
谢谢。 贾斯。