sql递归查询 根据Id查所有子结点


Declare @Id Int
Set @Id = 0; ---在此修改父节点

With RootNodeCTE(D_ID,D_FatherID,D_Name,lv)
As
(
Select D_ID,D_FatherID,D_Name,0 as lv From [LFBMP.LDS].[dbo].[LDS.Dictionary] Where D_FatherID In (@Id)
Union All
Select [LFBMP.LDS].[dbo].[LDS.Dictionary].D_ID,[LFBMP.LDS].[dbo].[LDS.Dictionary].D_FatherID,[LFBMP.LDS].[dbo].[LDS.Dictionary].D_Name,lv+1 From RootNodeCTE
Inner Join [LFBMP.LDS].[dbo].[LDS.Dictionary]
On RootNodeCTE.D_ID = [LFBMP.LDS].[dbo].[LDS.Dictionary].D_FatherID
)
Select * From RootNodeCTE


;With TB([Cd_ID],[ConstituteID],[Cd_PID],[Cd_CName],lv)
as (
Select [Cd_ID],[ConstituteID],[Cd_PID],[Cd_CName],0 as lv FROM [LFBMP.Center].[dbo].[ConstituteDetail] Where [Cd_PID]=0 And [ConstituteID]=4
union all
Select A.[Cd_ID],A.[ConstituteID],A.[Cd_PID],A.[Cd_CName] ,lv+1 FROM TB inner join [LFBMP.Center].[dbo].[ConstituteDetail] as A
on TB.[Cd_ID]=A.Cd_PID
)
Select * From TB


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM