Recursive query for parent child hierarchy. Get descendants from a top node

后端 未结 1 604
故里飘歌
故里飘歌 2021-01-23 13:28

I have a table that stores hierarchy data in parent child format with one top node. Multiple levels, and each parent having multiple children. How can I write a recursive query

相关标签:
1条回答
  • 2021-01-23 13:54

    If your DBMS is SQL Server you can accomplish this through Common Table Expressions (CTE) using recursion. I believe this works on all versions 2008R2 and above. The below query will give you all the Parent - Child relationships that are descendants of 3.

    CREATE TABLE dbo.ParentChildRel
    (
        Parent INT
       ,Child INT
    )
    
    INSERT INTO dbo.ParentChildRel
    VALUES (1,2)
          ,(1,3)
          ,(2,4)
          ,(2,5)
          ,(3,6)
          ,(3,7)
          ,(6,8)
          ,(7,10)
    
    ;WITH Hierarchy AS
        (
            SELECT Parent   
                  ,Child
            FROM dbo.ParentChildRel
            WHERE Parent = 3
            UNION ALL
            SELECT rel.Parent
                  ,rel.Child
            FROM Hierarchy hier
                 INNER JOIN dbo.ParentChildRel rel ON hier.Child = rel.Parent
        )
    SELECT *
    FROM Hierarchy
    

    Results

    Parent  Child
    3       6
    3       7
    7       10
    6       8
    
    0 讨论(0)
提交回复
热议问题