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

我的数据库中有以下数据:
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小提琴示例using your data
with additional data to demonstrate the recursive CTE

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 &#39;EastRiver&#39; 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...