gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:58:03 26 4
gpt4 key购买 nike

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

Parent      Child
101 102
101 103
101 104
101 105
101 106

我的参数是106。并且使用该参数我想检索其父级(即101)下的所有其他子级。我尝试使用递归方法,但鉴于以下数据,它不起作用。还有其他方法来制定查询吗?

最佳答案

假设您想要获取值 @p0兄弟,您可以使用简单的自连接:

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:

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

关于sql - 使用 MSSQL 查询获取父级的所有子级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19041814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com