sql select parent child recursive in one field

前端 未结 1 1244
广开言路
广开言路 2021-02-15 16:42

I do not know how to select query recursive..

 id     idparent    jobNO
--------------------------------
  1         0         1
  2         1         2
  3              


        
相关标签:
1条回答
  • 2021-02-15 17:05

    You need to use a Recursive Common Table Expression.

    There are many useful articles online.

    Useful Links

    Simple Talk: SQL Server CTE Basics

    blog.sqlauthority: Recursive CTE

    Here is a solution to your question:

       CREATE TABLE #TEST
        (
            id int not null,
            idparent int not null,
            jobno int not null
        );
    
        INSERT INTO #Test VALUES 
        (1,0,1),
        (2,1,2),
        (3,1,3),
        (4,0,4),
        (5,4,5),
        (6,5,6);
    
        WITH CTE AS (
    -- This is end of the recursion: Select items with no parent
            SELECT id, idparent, jobno, CONVERT(VARCHAR(MAX),jobno) AS ListJob
            FROM #Test
            WHERE idParent = 0
        UNION ALL
    -- This is the recursive part: It joins to CTE
            SELECT t.id, t.idparent, t.jobno,  c.ListJob + '/' + CONVERT(VARCHAR(MAX),t.jobno) AS ListJob
            FROM #Test t
            INNER JOIN CTE c ON t.idParent = c.id
        )
        SELECT * FROM CTE
        ORDER BY id;
    
    0 讨论(0)
提交回复
热议问题