sql 实现递归算法
2007-07-13 16:24
288 查看
最近一段上csdn的时间比较多,浏览了不少sql server 版面的帖子,发现根据传入参数查找指定项的子项的递归用法提问的比较多,所以在这里总结一下:
样表:
child,parent
1 0
2 0
3 1
4 2
要实现这种用法一般都通过两种方式来实现:
procedure 方式:
create procedure usp_getallchild(@child int)
as
declare @t table(child int null,parent int null,level int null)
declare @level int
set @level=0
insert into @t(child,parent,level) select child,parent,@level from table where child=@child
while @@rowcount>0
begin
set @level=@level+1
insert into @t(child,parent,level) select child,parent,@level from table jion @t as t on t.child=table.parent where t.level=@level-1
end
select * from @t
function 方式:
create function udf_getallchild(@child int)
returns @t_return table(child int null,parent int null,level int null)
as
begin
declare @level int
set @level=0
insert into @t_return(child,parent,level) select child,parent,@level from table where child=@child
while @@rowcount>0
begin
set @level=@level+1
insert into @t(child,parent,level) select child,parent,@level from table jion @t_return as t on t.child=table.parent where t.level=@level-1
end
return @t_return
end
样表:
child,parent
1 0
2 0
3 1
4 2
要实现这种用法一般都通过两种方式来实现:
procedure 方式:
create procedure usp_getallchild(@child int)
as
declare @t table(child int null,parent int null,level int null)
declare @level int
set @level=0
insert into @t(child,parent,level) select child,parent,@level from table where child=@child
while @@rowcount>0
begin
set @level=@level+1
insert into @t(child,parent,level) select child,parent,@level from table jion @t as t on t.child=table.parent where t.level=@level-1
end
select * from @t
function 方式:
create function udf_getallchild(@child int)
returns @t_return table(child int null,parent int null,level int null)
as
begin
declare @level int
set @level=0
insert into @t_return(child,parent,level) select child,parent,@level from table where child=@child
while @@rowcount>0
begin
set @level=@level+1
insert into @t(child,parent,level) select child,parent,@level from table jion @t_return as t on t.child=table.parent where t.level=@level-1
end
return @t_return
end
相关文章推荐
- SQL实现递归算法获取部门所有子部门
- SQL实现递归算法
- 通过FTP实现Internet上MS SQL Server数据库复制-事前准备
- java执行SQL语句实现查询的通用方法详解
- 通过FTP实现Internet上MS SQL Server数据库复制-调试问题
- 实现一个递归算法
- (精)如何利用T_SQL实现数据库备份与还原处理之一
- Android SQL语句实现数据库的增删改查
- [瞎玩儿系列] 使用SQL实现Logistic回归
- SQL实现交叉表的方法
- delphi应用SynEdit完美实现SQL语法高亮
- SQL--删除表数据的三种不同实现方法
- sql 数据的分页 自称完美的实现
- 织梦使用{dede:listsql}标签调用数据并实现静态分页
- C# Linq to sql 实现 group by 统计多字段 返回多字段
- 用SQL语句实现随机查询数据并不显示错误数据
- 对sql的查询语句做成对象式,简单实现。查询参数实现一
- ORACLE纯SQL实现多行合并一行
- 单条SQL语句实现复杂逻辑几例(转)
- SQL 语句--用于实现分页