sqlserver 实现递归

sqlserver 实现递归,第1张

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

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

         

现有表结构如下:
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_@R_403_5991@ where KeyId=@KeyId

         union all

         select a.* from T_@R_403_5991@ as a, T_shi as b where a.parentID=b.keyID

     )

    select * from T_shi

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

总结

以上是内存溢出为你收集整理的sqlserver 实现递归全部内容,希望文章能够帮你解决sqlserver 实现递归所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1182911.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存