SqlServer_合并多个递归查询数据(CTE)

时间:2022-02-25 00:27:53
该方法在数据量过大时,效率过低,可参考hierarchyid字段实现(Sqlserver 2008)
优点:效率较高
缺点:需要不断维护数据,对现有业务有一定影响
参考:http://www.cnblogs.com/luminji/p/4403569.html
 
--cteChildren 子孙信息
--cteParents  父亲信息
with cteChildren(EmpID,ParentID) 
AS 
(
select EmpID,ParentID from Persons  where parentid = 10171 
union all 
select t.EmpID,t.parentid from Persons  as t 
inner join cteChildren as c on t.ParentID = c. Id
),
cteParents(EmpID,ParentID) 
AS 
( 
select EmpID,ParentID from Persons  where Id = 10172 
union all 
select t.EmpID,t.parentid from Persons  as t 
inner join cteParents as c on t.Id = c.ParentID 
) 
--合并查询
select Id from cteChildren 
UNION 
select Id from cteParents