我有下面的数据表。
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/