`

sql 实现递归算法

阅读更多

根据传入参数查找指定项的子项的递归用法

样表:
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(t.child,t.parent,level) select [table].child,[table].parent,@level from [table] where [table].child=@child
while @@rowcount>0
begin
 set @level=@level+1
 insert into @t(t.child,t.parent,level) select [table].child,[table].parent,@level from [table] join @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 server table类型的变量使用注意事项

在sql sever 中,table类型的变量的使用可以给我们带来很多方便之处,但是方便的东西往往是存在一些不足的 ,

table 类型的变量在作为 表使用时,在进行关联操作时,必须给表变量起一个别名,不然SQL SERVER 会豪不客气的告诉你,你没有申明该表变量。其它使用可以很实体表一样使用。
 


  


  
分享到:
评论

相关推荐

    sql递归算法并停止到具体的层数

    在给定的文件"sql递归算法并停止到具体的层数.sql"中,可能包含了上述逻辑的具体实现,你可以打开文件查看详细代码,进一步理解如何在实践中应用这些理论知识。通过学习和实践这些递归查询技巧,你将能够更有效地...

    用SQL Server显示树结构, 不用递归算法,不用游标,没有层次限制, 速度很快

    -- 用SQL Server显示树结构, 不用递归算法,不用游标,没有层次限制, 速度很快 -- 显示、打印用起来很方便的 -- select * from Dept -- select * from dbo.GetDeptTree('00000000-0000-0000-0000-000000000000') ...

    用SQL Server取得树节点路径, 不用递归算法,不用游标,没有层次限制, 速度很快

    -- 用SQL Server取得树节点路径, 不用递归算法,不用游标,没有层次限制, 速度很快 -- 显示、打印用起来很方便的 -- print dbo.GetDeptPath('5cb3c3ee-4b2b-4005-8037-bb3876663d2e','->') -- select * from Dept

    JAVA_SQL递归树形

    JAVA_SQL递归树形,用递归算法结合数据库对J2EE实现树结构

    SQL实现递归及存储过程中In()参数传递解决方案详解

    在SQL Server中,我们可以利用表表达式来实现递归算法,一般用于阻止机构的加载及相关性处理。 –>实现: 假设OrganiseUnit(组织机构表)中主要的三个字段为OrganiseUnitID(组织机构主键ID)、...

    SQL递归算法

    create function f_id(@parentid nvarchar(10)) returns @re table(orderid int,parentid int,title nvarchar(20),level int) as begin declare @l int set @l=0 insert @re select orderid, parentid ,...

    sql server实现递归查询的方法示例

    本文实例讲述了sql server实现递归查询的方法示例。分享给大家供大家参考,具体如下: 有时候面对树结构的数据时需要进行递归查询,网上找了一番,参考了各位大神的文章,发现蛮简单的,当做个小笔记方便以后使用 sql ...

    SqlServer实现递归查询

    例如,现在需要查询出西湖区以及西湖区所属的市和省,这时候就需要用到SQL递归查询。我在这里构造了一张数据表[tb_Test],其数据如下所示: Id Name ParentId 1 浙江省 NULL 2 杭州市 1 3 湖州市 1 4 滨江区 2 ...

    SQL在递归查询和逻辑谓词上的扩充.pdf

    - **递归查询的语法扩充**:文章详细介绍了如何在SQL的现有语法基础上增加递归查询的语法结构,并提出了相应的解析和执行算法。 - **逻辑谓词的理论与算法**:对于逻辑谓词的扩充,文章探讨了相关的理论基础,给出...

    算法 回溯 动态递归 分支限界 图 etc.

    在IT领域,算法是解决问题的...实际学习中,还需要深入理解每种算法的实现细节、时间复杂度和空间复杂度,以及它们在不同场景下的适用性。熟练掌握这些算法和数据结构,对于提升编程能力和解决实际问题的能力至关重要。

    T-SQL中的递归.pdf

    在本文中,我们将探讨T-SQL中的递归,并介绍一个使用递归算法来解决问题的示例。我们将讨论递归的定义、优缺点、应用场景以及一些需要注意的重要问题。 递归的定义 递归是一种编程技巧,指一个存储过程或函数调用...

    使用SQL实现的冒泡排序算法 mysql数据库

    在MySQL数据库中,通常我们不直接使用SQL来执行排序算法如冒泡排序,因为SQL是设计用来查询和操作数据的,而不是执行通用的计算或算法任务。然而,为了教学目的,我们可以尝试模拟冒泡排序的过程,但请注意这种方法...

    二叉树的递归算法:建立二叉树、遍历二叉树.doc

    二叉树的递归算法:建立二叉树、遍历二叉树

    hibernate实现递归查询

    递归是一种算法,它通过调用自身来解决问题。在查询数据库时,递归查询意味着我们查询一个记录,然后根据该记录的某些属性再查询其关联的记录,这个过程可能反复进行,直到满足某个终止条件。 在Hibernate中,我们...

    带数据库的递归经典树形菜单

    1. **递归**:理解并运用递归算法来处理具有层级关系的数据。 2. **树形数据结构**:学习如何在数据库中存储和管理树形结构,并在前端展示。 3. **数据库设计**:创建适当的表结构来存储菜单数据,如`menus`表,包含...

    connect_by_prior_递归算法

    ### Oracle中的Connect By Prior递归算法详解 #### 一、Connect By Prior 子句概述 在Oracle数据库中,`Connect By Prior`子句是一种非常有用的工具,尤其在处理具有层次结构的数据时。它允许用户以一种简洁的方式...

    所有BOM列表_VBA连接BOM表的递归展开至最后一阶_

    在IT行业中,BOM(Bill of Materials)是用于描述产品组件和层次结构的文档,它在制造业、工程设计和项目管理等领域...它结合了数据库连接、递归算法、数据处理和Excel的自定义功能,提供了一种强大的自动化解决方案。

    excel 递归导出 sql语句

    "excel 递归导出 sql语句"的主题涉及如何利用递归算法来解决此类问题,目的是将具有层级关系的数据从Excel表格中导出并转化为SQL插入语句,以便轻松地将数据导入数据库。 首先,我们要理解什么是递归。递归是一种...

    sqlserver另类非递归的无限级分类(存储过程版)

    通常,实现无限级分类有两种主要方法:递归算法和非递归算法。本篇讨论的是非递归算法的一种特殊实现,通过存储过程来完成。 首先,我们来看传统的递归算法,它基于树形结构,通过递归查询逐级获取上级分类。这种...

Global site tag (gtag.js) - Google Analytics