就是在数据表中方一个排序字段SortNumber update #Simple_PartTree set SortNumber = 0 declare @OldChildID decimal declare @OldFatherID decimal Set @MaxSortNumber = (Select Count(ChildID) From #Simple_PartTree) Set @SortNumber = 1 select top 1 @OldChildID = ChildID,@OldFatherID=FatherID,@ChildID=ChildID,@FatherID=FatherID from #Simple_PartTree
update #Simple_PartTree set SortNumber = @SortNumber where childid = @ChildID set @SortNumber = @SortNumber + 1 while @SortNumber<=@MaxSortNumber begin set @ChildID = null select top 1 @ChildID = ChildID,@FatherID=FatherID from #Simple_PartTree where FatherID=@OldChildID and SortNumber = 0 while @ChildID is not null begin
update #Simple_PartTree set SortNumber = @SortNumber where childid = @ChildID set @SortNumber = @SortNumber + 1 set @OldChildID = @ChildID set @ChildID = null select top 1 @ChildID = ChildID,@FatherID=FatherID from #Simple_PartTree where FatherID=@OldChildID and SortNumber = 0 end select top 1 @OldChildID=fatherid from #Simple_PartTree where ChildID = @OldChildID end
update #Simple_PartTree set SortNumber = 0
declare @OldChildID decimal
declare @OldFatherID decimal
Set @MaxSortNumber = (Select Count(ChildID) From #Simple_PartTree)
Set @SortNumber = 1 select top 1 @OldChildID = ChildID,@OldFatherID=FatherID,@ChildID=ChildID,@FatherID=FatherID
from #Simple_PartTree
update #Simple_PartTree set SortNumber = @SortNumber
where childid = @ChildID set @SortNumber = @SortNumber + 1 while @SortNumber<=@MaxSortNumber begin
set @ChildID = null
select top 1 @ChildID = ChildID,@FatherID=FatherID
from #Simple_PartTree
where FatherID=@OldChildID and SortNumber = 0 while @ChildID is not null begin
update #Simple_PartTree set SortNumber = @SortNumber
where childid = @ChildID set @SortNumber = @SortNumber + 1 set @OldChildID = @ChildID
set @ChildID = null
select top 1 @ChildID = ChildID,@FatherID=FatherID
from #Simple_PartTree
where FatherID=@OldChildID and SortNumber = 0
end select top 1 @OldChildID=fatherid from #Simple_PartTree where ChildID = @OldChildID
end
树形数据处理