微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sqlserver 实现递归

   从子节点找到最终的父节点

         

现有表结构如下:
id     pid     title
1       0       这是主题
2       1       这是跟贴1
3       2       这是跟贴2
4       3       这是跟贴3
此表的树层次为三四层结构.
要求实现通过传入id值,求最顶层的id值,如传入id=4,得出最顶层id=1的主题


解如下:
--创建函数
create function 函数名(@keyno int)
returns int
as
begin
declare @pid int,@tmppid int
set @tmppid = (select [pid] from [表名] where [id] = @keyno)
if (@tmppid=0)
set @pid = (select [id] from [表名] where [id] = @keyno)
else
set @pid = [数据库名].[当前数据库用户].[函数名](@tmppid)
return @pid
end

--调用
SET DATEFirsT 1
SELECT [数据库名].[当前数据库用户].[函数名](参数) as 'aa'

--删除函数
DROP FUNCTION 函数

原文:http://hi.baidu.com/xxfjqb/blog/item/f69bb8deb61c845fcdbf1a53.html

 2,从父节点查出所有的子节点

     表结构:

   KeyId  ParentId  Name,…………

          1            0          父

          2            1          子

          ………………………………

 

  declare @nvarchar(50) KeyId

     ;//一定要以分号隔开

  with T_shi

      (

 

         select * from T_table where KeyId=@KeyId

         union all

         select a.* from T_table as a, T_shi as b where a.parentId=b.keyId

     )

    select * from T_shi

     有了这个涵数,递归简单吧!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐