加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

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

发布时间:2021-03-08 17:17:01 所属栏目:编程 来源:网络整理
导读:我的数据库中有以下数据: Parent Child101 102101 103101 104101 105101 106 我的参数是106.而且行使参数我想要检索其父项下的全部其他子项,即101.我实行行使递归要领可是在给定以下数据的环境下它不起浸染.尚有另一种要领来拟定查询吗? 办理要领 假设您想

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

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

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读