首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当id和parent id在同一个表中时,我可以选择父的完整层次结构吗?

当id和parent id在同一个表中时,我可以选择父的完整层次结构吗?
EN

Stack Overflow用户
提问于 2010-12-09 05:28:04
回答 3查看 3.7K关注 0票数 2

我有一个表,其中有一个Id和parentId列。ParentId包含表中另一行的Id。如果ParentId为null,则它是层次结构的顶部。

我有一个行的Id,并且我想在层次结构中选择它上面的所有行。我能在一次select中做到这一点吗?

因此,在此示例中:

Id | parentId |其他列

1|空

2|1

3|2

如果我有id=3,我想选择行1,2,3。

我能在linq to sql中做吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-12-09 05:31:56

您可以使用recursive CTE在单个select中执行此操作,但是LINQ to SQL不支持此操作,因此您必须创建一个带有查询的存储过程,并从LINQ to SQL调用该存储过程。

票数 2
EN

Stack Overflow用户

发布于 2010-12-09 05:52:36

看看,使用递归CTE。

票数 1
EN

Stack Overflow用户

发布于 2010-12-09 06:16:51

不知道LINQ,但正如其他回答者所写的那样,许多关系数据库支持通用表表达式(CTE) -但不是所有(想到Oracle)。如果支持的话,CTE是一个检索“祖先”的好方法。

值得一提的是,还有一些其他方法可以考虑,特别是桥接表或嵌套集。See my question for some explanation of these options和其他表示分层数据的方法。简而言之,使用触发器中的CTE更新的桥接表很可能会很容易地给出所有的祖先或后代--只是不知道有多近。嵌套的set模型将为您提供此信息,以及以相对昂贵的插入和更新为代价的接近程度。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4392541

复制
相关文章

相似问题

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