0 0

SQLServer2000 实现递归查询3

以前递归都是先读出父菜单数据到java中处理的,现在碰到要在sql中直接查询出递归的结果,网上有很多递归的例子但都只到第一级,我的是不定级数的,如: 数据库是Sql Server 2000 的
id pid name
1 0 福建
2 0 浙江
3 1 厦门
4 2 绍兴
5 1 三明
6 3 思明区
这个是原始表数据

查询后结果变成:
id pid name
1 0 福建
3 1 厦门
6 3 思明区
5 1 三明
2 0 浙江
4 2 绍兴

好像要创建sql 方法来解决,哪位有做过的,望指点
2011年5月13日 16:21

1个答案 按时间排序 按投票排序

0 0

在MSSQL中需要使用临时表和循环多次查询的方式实现.
创建函数:

create function GetRecursion(@id int)
returns @t table(
    id int,
    name varchar(50),
    parentid int
)
as
begin
    insert @t select * from recursion where >    while @@rowcount>0
        insert @t select a.* from recursion as a inner join @t as b
        on a.parentid=b.id and a.id not in(select id from @t)
return
end

使用方法:
select * from GetRecursion(4)
查询结果:
id       name       parentid
4       产品分类     -1
5       保健品          4
6       医药              4
7       建筑              4

2011年5月13日 19:04

相关推荐

    sql server 2008 递归查询所有上级或下级数据

    在SQL Server 2008中实现递归查询来获取所有上级或下级数据是一项非常实用的技术,尤其是在处理具有层次结构的数据时。本篇将详细解释如何利用Common Table Expressions (CTE)来完成这样的查询,并对提供的示例代码...

    asp.net+sql server2000实现递归绑定树形控件

    本教程将详细介绍如何利用asp.net和SQL Server 2000实现递归绑定树形控件。 首先,我们需要理解递归的概念。递归是一种编程技巧,函数或方法调用自身以解决复杂问题。在树形控件的上下文中,递归通常用于遍历具有...

    SQL Server CTE 递归查询全解1

    SQL Server中的递归查询主要通过CTE(公共表表达式)来实现,它是一种非常强大的工具,特别适用于处理层次结构数据。CTE是T-SQL脚本中的临时结果集,可以用于复杂的查询,尤其是需要递归操作的情况。本文将深入探讨...

    sqlserver 2005 使用CTE 实现递归

    ### SQL Server 2005 中使用 CTE 实现递归 #### 一、CTE 递归原理 在 SQL Server 2005 中,使用公共表表达式(Common Table Expression, CTE)实现递归是一种高效且直观的方式。递归 CTE 通常由两部分构成:定位...

    SQL 递归查询,并将结果集保存在临时表中

    ORGNAME,T.P_ORGDICTID,T.F_PARENTID FROM T_SYS_ORGDICT AS T INNER JOIN CTE AS C ON T.F_PARENTID=C.P_ORGDICTID`)则将当前CTE的结果与原表进行连接,寻找所有父ID在CTE结果中的记录,从而实现递归。 3. **临时...

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

    以下是一个示例,展示了如何在SQL Server中实现递归查询: 1. **查找上级所有节点**: 这种情况通常用于获取某个节点的所有上级节点。首先定义CTE `uCte`,其中基础部分选择起始节点(例如,id为3的节点),然后...

    SQL SERVER 列表菜单递归处理方式以及大小节点排序

    当初花了很长时间查资料、逛博客 终于搞定的排序 以及对于处理菜单列表显示的 问题。希望对你们有帮助。压缩包包含数据表创建脚本 以及 实现功能的语句 表结构字段 id、name、url、pid、indexs

    sqlserver实现树形结构递归查询(无限极分类)的方法

    在SQL Server中,实现树形结构递归查询是数据库管理中的常见需求,特别是在处理具有层级关系的数据时,如无限级分类。SQL Server 2005及以后版本引入了公用表表达式(CTE,Common Table Expression)来支持递归查询...

    SqlServer实现递归查询

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

    SQLserver2008使用表达式递归查询

    在SQL Server 2008中,表达式递归查询是一种强大的工具,尤其适用于处理具有层级关系的数据,如组织结构、目录树或者分类系统。这种技术主要依赖于公用表表达式(Common Table Expression, CTE),它允许在单个查询...

    VS2005+sql server2000实现无限级树形菜单

    - 使用ADO.NET或者Entity Framework连接到SQL Server 2000数据库,执行查询获取树形数据 - 使用递归或者迭代方法构建树形结构,如`TreeNode`类 - 将构建好的树形结构绑定到控件,如TreeView控件 **5. TreeView控件*...

    sql递归查询实例2

    为了实现递归查询,我们定义了一个名为`aa`的函数,该函数接受一个`upperid`作为参数,并返回一个包含`id`、`upperid`和`level`的表。 ```sql IF EXISTS(SELECT * FROM dbo.sysobjects WHERE name = 'aa') DROP ...

    使用SQL Server存储过程递归遍历层次结构.pdf

    在SQL Server中,递归遍历可以通过存储过程配合游标实现,但这种方法在实际应用中可能会遇到一些问题。 首先,SQL Server在声明游标时,默认的作用域是连接级的,即全局的。这意味着在同一连接过程中,不能创建两个...

    SQL Server 2000 高级编程技术(PDG).rar

    9. **分布式数据库**:学习如何在SQL Server 2000中实现分布式查询和复制,以适应多地点、跨系统的信息共享需求。 10. **服务与组件**:如SQL Server Agent、Analysis Services、Notification Services等,都是SQL ...

    sqlserver中存储过程的递归调用示例

    递归式指代码片段调用自身的情况;危险之处在于:如果调用了自身一次,那么如何防止他反复地调用自身。也就是说提供递归检验来保证适当的时候可以跳出。 以阶层为例子说存储过程中递归的调用。 递归 CREATE PROC ...

    浅谈T-SQL语言之递归查询.pdf

    在实现递归查询时,CTE通过关键字WITH来建立,遵循特定的语法格式。例如,使用WITH关键字后跟CTE的名称,然后是括号内定义的列名,随后是AS关键字,最后是CTE查询的定义。如果CTE定义中的列名是唯一的,可以省略列名...

    sql_函数实现三种父子递归

    在SQL Server 2005及以上版本,还可以使用公用表表达式(CTE)进行递归查询,以更简洁的方式完成相同的功能。 2. 查找所有父节点(反向递归): 与查找子节点相反,我们从一个节点开始,向上查找其所有父节点直至根...

Global site tag (gtag.js) - Google Analytics