我有下面的数据表。

id|child
1|2
1|3
1|4
2|6
2|7
3|9
6|10
6|11
17|18
19|20
18|19


我需要获取如下数据。即,对于所有孩子的关系,其父代都具有ID(在此处为1和19)。

在这里,我递归地选择了超级父代ID为“ 1”的所有子代

id|all_child_id
1|2,3,4,6,7,9,10,11


在这里,我要选择超级父代ID为“ 17”的所有子代。

id|all_child_id
17|18,19,20


我不知道如何在sql中编写递归查询。

请不要要求我创建中间表。

最佳答案

这将使您父母的所有孩子都受益

   declare @parent_id as int;
    set @parent_id =  1;

    WITH RecursiveTable (SR_NO, parent_id,name, Level)
    AS
    (
        SELECT      MaintTab.SR_NO,
                    MaintTab.parent_id,
                    MaintTab.name,
                    0 AS Level
        FROM Product_Master_Final AS MaintTab
        WHERE parent_id = @parent_id

        UNION ALL

        SELECT  MaintTab.SR_NO,
                    MaintTab.parent_id,
                    MaintTab.name ,
                    LEVEL + 1
        FROM Product_Master_Final AS MaintTab
            INNER JOIN RecursiveTable Rtab ON
            MaintTab.parent_id = Rtab.SR_NO
    )
    SELECT * FROM RecursiveTable

关于mysql - 获取MySQL中 super 父级的所有子ID,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23651017/

10-11 01:57