查找树折点表低层数据

 create table abc(
id int,
tname varchar(20),
parentid int
)
insert into abc select 1,'a',-1
union all 
select 2,'b',1
union all
select 3,'c',1
union all
        select 4,'d',2
union all
select 5,'e',2
union all 
select 6,'f',3
union all
select 7,'g',3

select * from abc

exec index_base 1

create proc index_base
(
@id int
)
as
   select id ,IDENTITY(int, 1,1) AS ID_no into #tb1 from abc where parentid=@id
   select id into #tb2 from abc where 1=2

while ((select count(1) from #tb1)<>0 )
begin
    if (select count(1) from abc where parentid = (select top 1 id from #tb1 order by ID_no asc) )<>0
begin
insert into #tb1(id) select id from abc where parentid = (select top 1 id from #tb1 order by ID_no asc)
delete #tb1 where id = (select top 1 id from #tb1 order by ID_no asc)
end
else
begin
insert #tb2 select top 1 id from #tb1 order by ID_no asc
delete #tb1 where id = (select top 1 id from #tb1 order by ID_no asc)
end
end
select * from abc where id in(select * from #tb2)
drop table #tb1
drop table #tb2
GO
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值