首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用MSSQL查询获取父级的所有子级

使用MSSQL查询获取父级的所有子级
EN

Stack Overflow用户
提问于 2013-09-27 10:35:17
回答 4查看 54.1K关注 0票数 11

我的数据库中有以下数据:

代码语言:javascript
运行
复制
Parent      Child
101         102
101         103
101         104
101         105
101         106

我的参数是106。并且使用参数,我想要检索它的父级下的所有其他子级,即101。我试着使用递归方法,但给出了以下数据,它不起作用。有没有其他的方法来表达一个查询?

EN

Stack Overflow用户

发布于 2013-09-27 10:50:31

假设您想要获取值@p0的同级,您可以使用一个简单的自联接:

代码语言:javascript
运行
复制
SELECT p.Child
FROM Table1 c
INNER JOIN Table1 p ON c.Parent = p.Parent
WHERE c.Child = @p0
AND p.Child <> @p0

这里的不相等子句确保您得到的同级不包括您搜索的值。必要时将其删除。

SQL Fiddle example

既然您提到了递归,那么您可能希望整个树从值@p0的父级开始。在这种情况下,您可以使用递归CTE:

代码语言:javascript
运行
复制
WITH parent AS (
    SELECT Parent
    FROM Table1
    WHERE Child = @p0
), tree AS (
    SELECT x.Parent, x.Child
    FROM Table1 x
    INNER JOIN parent ON x.Parent = parent.Parent
    UNION ALL
    SELECT y.Parent, y.Child
    FROM Table1 y
    INNER JOIN tree t ON y.Parent = t.Child
)
SELECT Parent, Child
FROM tree

SQL Fiddle示例using your datawith additional data to demonstrate the recursive CTE

票数 16
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19041814

复制
相关文章

相似问题

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