我有一个表,它通过两个字段存储递归记录: ID和PARENTID。
我有一个功能,可以将父元素与树的元素相关联。当我选择可以作为自己的“父元素”的元素时,我显然应该从结果列表中排除所有直接或间接依赖于我的元素,但也包括我已经依赖的元素。
让我们举个例子。给定以下示例层次结构:
ID PARENT_ID
----------- ------------------
1 NULL
2 1
3 NULL
4 2
5 1
6 3如果我想用ID = 4查找可以作为element父元素的元素,我将只考虑elements 5 - 3 - 6,因为它们与实际结构没有任何关系。
如何使用CTE查询获取这些元素?
发布于 2012-11-13 03:22:40
Select *
into #tmp
From Tree2
;WITH Rollups AS (
SELECT ID, Parent_Id
FROM tree2 where ID=4
UNION ALL
SELECT parent.Id, parent.Parent_Id
FROM tree2 parent
INNER JOIN Rollups child ON child.Id = parent.Parent_Id
)
Delete #tmp from Rollups where #tmp.ID=Rollups.ID
;WITH Rollups AS (
SELECT ID, Parent_Id
FROM tree2 where ID=4
UNION ALL
SELECT parent.Id, parent.Parent_Id
FROM tree2 parent
INNER JOIN Rollups child ON child.Parent_Id = parent.Id
)
Delete #tmp from Rollups where #tmp.ID=Rollups.ID
Select * from #tmp
Drop Table #tmp https://stackoverflow.com/questions/13349488
复制相似问题