该方法在数据量过大时,效率过低,可参考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