sql函数实现递归查询示例

发布时间:2020-07-15编辑:脚本学堂
分享下sql中用函数实现递归查询的一段代码,掌握下sql递归查询的实现方法,有需要的朋友参考下。

本节内容:
sql函数实现递归查询

表结构如下:
 

id     pid     title
1       0       这是主题贴
2       1       这是跟贴1
3       2       这是跟贴2
4       3       这是跟贴3
 

此表的树层次为三四层结构.
要求实现通过传入id值,求最顶层的id值,如传入id=4,得出最顶层id=1的主题贴。

sql递归查询代码:
 

复制代码 代码示例:
--创建函数
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 函数名