首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用CTE从分层视图中获取元素

如何使用CTE从分层视图中获取元素
EN

Stack Overflow用户
提问于 2012-11-13 02:39:16
回答 1查看 198关注 0票数 1

我有一个表,它通过两个字段存储递归记录: ID和PARENTID。

我有一个功能,可以将父元素与树的元素相关联。当我选择可以作为自己的“父元素”的元素时,我显然应该从结果列表中排除所有直接或间接依赖于我的元素,但也包括我已经依赖的元素。

让我们举个例子。给定以下示例层次结构:

代码语言:javascript
运行
复制
ID                  PARENT_ID
-----------         ------------------
1                    NULL
2                    1
3                    NULL
4                    2
5                    1
6                    3

如果我想用ID = 4查找可以作为element父元素的元素,我将只考虑elements 5 - 3 - 6,因为它们与实际结构没有任何关系。

如何使用CTE查询获取这些元素?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-13 03:22:40

代码语言:javascript
运行
复制
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 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13349488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档