@CurID 当前ID
@Rowcount 总行数
@ParentID 父级ID
@Curcount 当前行数
*/
use test
Declare @CurID int,@Rowcount int,@orderID int,@ParentID int,@Curcount int
Declare @temTb TABLE (ID int,name char(10),orderID int)
Set @Rowcount=(select sum(id) from test)
Set @Curcount=1
set @CurID=(select top 1 id from test order by id)
while @Rowcount>0
begin
set @ParentID=(select id from @temTb where id=(select parentid from test where id=@CurID))
if (@ParentID is null)
begin
Set @orderID=@Curcount-1
end
else
begin
Set @orderID=(select orderID from @temTb where id =@ParentID)
update @temTb set orderID=orderID+1 where orderID>@orderID
end
insert into @temTb (ID,name,orderID) SELECT ID,name,@orderID+1 FROM Test WHERE id=@CurID
Set @CurID=(select top 1 id from test where id>@CurID order by id)
Set @Rowcount=@Rowcount-1
Set @Curcount=@Curcount+1
end
select * from @temTb order by orderID
DECLARE @intRowCount int
SET @intLevel = 1
DECLARE @bbb TABLE (ID int,Level int)
INSERT INTO @bbb (ID,Level) SELECT ID,@intLevel FROM Test WHERE parentid IN (0)--这里以parentid为选择条件
SELECT @intRowCount = @@ROWCOUNT
WHILE @intRowCount > 0
BEGIN
INSERT INTO @bbb (ID,Level) SELECT ID,@intLevel + 1 FROM Test WHERE parentid IN
(SELECT ID FROM @bbb WHERE Level = @intLevel)
SELECT @intRowCount = @@ROWCOUNT
SET @intLevel = @intLevel + 1
END
select * from @bbb