首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sql获取父级的所有子级

问Sql获取父级的所有子级
EN

Stack Overflow用户
提问于 2009-10-26 21:52:20
回答 8查看 8.1K关注 0票数 4

假设我有一个区域表( id,parentId,name,path )。

给定一个Id,我希望获得给定区域的所有孩子(包括孩子的孩子,递归地)。

我确实在路径中存储了从父级到子级的路径。

示例:

代码语言:javascript
复制
1 NULL New York /1/
2 1    BRONX    /1/2/
3 1    MANH     /1/3/ 
4 3    UpWest   /1/3/4/
5 3    MidEast  /1/3/5/

因此,当询问纽约的孩子是什么时,查询应该返回bronx、manh、upwest和mideast。不只是布朗克斯和曼。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2009-10-26 21:55:57

将返回id为1的city子级的所有区域(例如,纽约)。您可以将该号码更改为任何其他城市,以便也返回它的孩子

代码语言:javascript
复制
select * from areas where path like '%/1/%'
票数 3
EN

Stack Overflow用户

发布于 2009-10-26 21:58:55

您可以使用

代码语言:javascript
复制
SELECT * FROM Areas WHERE Path LIKE '%/1/%'

如果您存储了路径

票数 2
EN

Stack Overflow用户

发布于 2009-10-26 22:14:56

如果你有一个设定的数字深度,你知道你永远不会比这个更深,这将会做你想要的:

代码语言:javascript
复制
select * from areas a1
join areas a2 on a1.id = a2.parent
join areas a3 on a2.id = a3.parent
join areas a4 on a3.id = a4.parent
join areas a5 on a4.id = a5.parent
where a1 = 1; --or whatever value you're searching for.

编辑:但是,如果你已经保存了路径(我直到现在才注意到),像'%/1/%‘这样的路径显然是更好的解决方案。

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

https://stackoverflow.com/questions/1624923

复制
相关文章

相似问题

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