在表中获取所有子级的 SQL。

3

我有一个名为tblmodules的表格,包含三列:moduleid、name和parent_id。其中,parent_id列的值是其他模块的ID。例如:

Moduleid      Name       Parentid
--------     -----       --------
1           grandparent    Null
2            parent         1
3           child           2
4           childofChild    3

我希望构建一个存储过程,如果我将祖父作为参数传递给存储过程,可以获取所有子项。对于上面的示例,我不仅想要(父级)而且我想要孙子和曾孙,因为他们都在祖父下面。请帮忙?

1个回答

3

你需要一个递归CTE

CREATE PROC YourProc 
@ModuleId INT
AS
    WITH R
         AS (SELECT *
             FROM   YourTable
             WHERE  Moduleid = @ModuleId
             UNION ALL
             SELECT Y.*
             FROM   YourTable Y
                    JOIN R
                      ON R.Moduleid = Y.Parentid)
    SELECT *
    FROM   R 

{{link1:SQL Fiddle}}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接