递归SQL查询以获取父项下的子项-SQL Server 2008
我正试图从表递归SQL查询以获取父项下的子项-SQL Server 2008,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我正试图从表#Temp中编写查询,以获取父id下的子项。请查看下表#Temp 注意:父值为NULL,则对应的子值为L1,需要查找L1到L5之间的级别 child | Parent c1 p1 p1 NULL c2 p2 p2 p3 p4 p3 p3 NULL 我正在寻找下面的输出 L1 | L2 | L3 | L4 | L5 p1 c1 NULL NULL NULL p3 p2 c2 NULL
#Temp
中编写查询,以获取父id下的子项。请查看下表#Temp
注意:父值为NULL
,则对应的子值为L1,需要查找L1到L5之间的级别
child | Parent
c1 p1
p1 NULL
c2 p2
p2 p3
p4 p3
p3 NULL
我正在寻找下面的输出
L1 | L2 | L3 | L4 | L5
p1 c1 NULL NULL NULL
p3 p2 c2 NULL NULL
p3 p4 NULL NULL NULL
我尝试过这个问题
SELECT L1.child 'L1',
L2.child 'L2',
L3.child 'L3',
L4.child 'L4',
L5.child 'L5'
FROM #temp L1
INNER JOIN #temp L2
ON L2.parent = L1.child
INNER JOIN #temp L3
ON L3.parent = L2.child
INNER JOIN #temp L4
ON L4.parent = L3.child
INNER JOIN #temp L5
ON L5.parent = L4.child
WHERE L1.parent IS NULL
但我没有得到预期的产出。请给我一些建议。提前谢谢 将innerjoin更改为Left join:
Select
L1.child 'L1', L2.child 'L2', L3.child 'L3', L4.child 'L4', L5.child 'L5'
from
#Temp L1
LEFT join
#Temp L2 ON L2.Parent = L1.child
LEFT join
#Temp L3 ON L3.Parent= L2.child
LEFT join
#Temp L4 ON L4.Parent= L3.child
LEFT join
#Temp L5 ON L5.Parent= L4.child
where
L1.Parent is null
你得到的是什么输出。你能把它贴在这里吗。