SQL递归查询数据

SQL递归查询数据_第1张图片


create   table   Tree(NodeId   int,ParentId   int,NodeName   varchar(4))  
  insert   into   Tree   select   0   ,-1,'一'  
  insert   into   Tree   select   1   ,0   ,'二'  
  insert   into   Tree   select   9   ,1   ,'三'  
  insert   into   Tree   select   10,9   ,'四'  
  insert   into   Tree   select   12,10,'五'  
  insert   into   Tree   select   18,1   ,'六'  
  go

create   function   f_getPath(@NodeId   int)  
  returns   varchar(8000)  
  as  
  begin  
          declare   @ret   varchar(8000),@ParentId   int  
          set   @ret   =   ''  
          select   @ret=@ret+NodeName,@ParentId=ParentId   from   Tree   where   NodeId=@NodeId  
          while   @@rowcount<>0  
          begin  
                  set   @NodeId=@ParentId  
                  select   @ret=@ret+NodeName,@ParentId=ParentId   from   Tree   where   NodeId=@NodeId  
          end  
          return   @ret  
  end  
  go

select * from tree
select   *,path=dbo.f_getPath(NodeId)   from   Tree  
  go

你可能感兴趣的:(sql,function,tree,table,insert,Path)