SQL Server 查询上级

SQL Server没有像oracle中那样可以很方便的查找上下级的层次搜索的方法。我尝试使用了一个存储过程来实现该功能,存储过程是以前看到别人写过类似的拿来改的。

 

create proc getParentType (@type_id   int)  
as  
  begin  
    declare   @tmp1     table   ([ID] int, type_name varchar(100), parent_type_id int)  
    declare   @tmp2     table   ([ID] int, type_name varchar(100), parent_type_id int)  
    declare   @tmp3     table   ([ID] int, type_name varchar(100), parent_type_id int)  
  insert   @tmp1   select   *   from   TD_Type   where   [type_id]=@type_id  
  insert   @tmp2   select   *   from   TD_Type   where   [type_id]=@type_id 

  while   (select   count(*)   from   @tmp2)>0  
  begin  
  insert   @tmp1   select   *   from   TD_Type   where   type_id   in   (select   [parent_type_id]   from   @tmp2)  
  insert   @tmp3   select   *   from   @tmp2  
  delete   @tmp2  
  insert   @tmp2   select   *   from   TD_Type   where   type_id   in   (select   [parent_type_id]   from   @tmp3)  
delete   @tmp3 
  insert   @tmp1   select   *   from   TD_Type   where   type_id   in   (select   [parent_type_id]   from   @tmp2)   
end 
end  
  select distinct(id), type_name, parent_type_id from @tmp1     
GO

  ------------------执行  
exec   getParentType   10015  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值