/*

递归查询 塗聚文
---SQL Server 2005环境下的实现:

*/
--生成测试数据
create table Dept(ID int,ParentID int,msg varchar(20))
insert into Dept select 1,0,'d'
insert into Dept select 2,1,'s'
insert into Dept select 3,1,'nl'
insert into Dept select 4,2,'d'
insert into Dept select 5,3,'s'
insert into Dept select 6,5,'f'
insert into Dept select 7,6,'d'
go

select * from Dept
Declare @Id Int
Set @Id = 1; ---在此修改父节点

With RootNodeCTE(Id,ParentID,msg)
As
(
Select ID,ParentID,msg From Dept
Where ParentID In (@Id)
Union All
Select Dept.ID,Dept.ParentID,Dept.msg From RootNodeCTE
Inner Join Dept
On RootNodeCTE.Id = Dept.ParentID
)
Select * From RootNodeCTE

---SQL Server 2000环境下的实现:
--生成测试数据 塗聚文 Geovin Du
create table Dept(ID int,ParentID int,msg varchar(20))
insert into Dept select 1,0,'d'
insert into Dept select 2,1,'s'
insert into Dept select 3,1,'nl'
insert into Dept select 4,2,'d'
insert into Dept select 5,3,'s'
insert into Dept select 6,5,'f'
insert into Dept select 7,6,'d'
go

select * from Dept

--创建用户定义函数
Create function [dbo].[GetChild](@ID varchar(10))
returns @t table(ID varchar(10),ParentID varchar(10),msg varchar(20),Level int)
as
begin
declare @i int
set @i = 1
insert into @t select @ID,@ID,null,0 --当前级,本级,如果不要的话可以注释掉或再加个参数来选择操作
insert into @t select ID,ParentID,msg,@i from Dept where ParentID = @ID

while @@rowcount<>0
begin
set @i = @i + 1
insert into @t
select
a.ID,a.ParentID,a.msg,@i
from
Dept a,@t b
where
a.ParentID=b.ID and b.Level = @i-1
end
return
end

--执行查询
select ID from dbo.GetChild(2)
go

--删除测试数据
drop function GetChild
drop table Dept

sql server 2000/2005递归的更多相关文章

  1. SQL Server 2000/2005 分页SQL — 单条SQL语句

    有关分页 SQL 的资料很多,有的使用存储过程,有的使用游标.本人不喜欢使用游标,我觉得它耗资.效率低:使用存储过程是个不错的选择,因为存储过程是经过预编译的,执行效率高,也更灵活.先看看单条 SQL ...

  2. SQL SERVER 2000/2005/2008数据库数据迁移到Oracle 10G细述

    最近参与的一个系统涉及到把SQL Server 2k的数据迁移到Oracle 10G这一非功能需求.特将涉及到相关步骤列举如下供大家参考: 环境及现有资源: 1.OS: Windows 7 Enter ...

  3. sql数据库恢复 文件丢失误删除 误格式化置疑报错修复 数据库置疑修复总结/SQL SERVER 2000/2005/2008/2008R2

    数据库置疑的原因会有多种多样,不同的问题采用的步骤也会有所不同,以下的步骤不能适用所有的情况,但包括了一些基本的步骤. 数据库置疑是指数据库内部处于不一致的状态,很有可能会有数据丢失.我们推荐您从做数 ...

  4. SQL语句添加删除修改字段[sql server 2000/2005]

    用SQL语句添加删除修改字段1.增加字段     alter table docdsp    add dspcodechar(200)2.删除字段     ALTER TABLE table_NAME ...

  5. 还有人在用SQL Server 2000或2005吗? 2014来了!

    你的项目,还在用SQL Server 2000或2005吗? 很多人甚至还没有来得及用过SQL Server 2008,SQL Server 2012,现在SQL Server 2014已经出来了! ...

  6. sql server 2000 和 sql server 2005 数据库连接字符串区别

    //sql server 2000 <add name="Connection" connectionString="Data Source=.;Initial C ...

  7. 加载MySQL、Oracle、SQL Server 2000、SQL Server 2005及以上版本 的加载数据库驱动程序

    2018-11-04  20:00:59 开始 //getConnection(String url, String user, String password) //url:连接数据库的URL 3 ...

  8. SQL SERVER 2012/2014 链接到 SQL SERVER 2000的各种坑

    本文总结一下SQL SERVER 2012/2014链接到SQL SERVER 2000的各种坑,都是在实际应用中遇到的疑难杂症.可能会有人说怎么还在用SQL SERVER 2000,为什么不升级呢? ...

  9. SQL SERVER 2000通过链接服务器发送邮件出现错误

    案例环境: 服务器A系统: Windows Server 2000 数据库版本 : Microsoft SQL Server  2000 - 8.00.2282 (Intel X86) 服务器B系统: ...

随机推荐

  1. android ScrollView中嵌套listview listview可点击处理,可展开

    public class MyListView extends ListView { public MyListView(Context context, AttributeSet attrs, in ...

  2. peepingtom

    简介 辅助评判网页渗透价值的自动化工具.它可以对制定IP和指定端口的所有http(s)服务进行快照,以一种易于浏览阅读的方式展示出来. 安装 git clone https://bitbucket.o ...

  3. [妙味JS基础]第十课:日期对象、时钟倒计时

    知识点总结 时间.年.月.日.时.分.秒 new Date() ->当前系统的时间对象 数字类型: getFullYear().getYear().getUTCFullYear() getYea ...

  4. php 基础篇 php 进阶篇

    1:echo 12*3: 2  echo "Welcome" . " to imooc!";字符串连接. 3>foreach($shuzu as $key ...

  5. discuz使用总结

    使用xampp作为运行环境 xampp的初始目录. xampp中mysql root账户的密码是空

  6. POJ 1740 A New Stone Game(多堆博弈找规律)

    传送门 //有n堆,AB轮流从n堆的一堆中移任意个,可以扔掉,也可以移给其他堆中的一堆 //最先移完的胜 //如果n堆中两两堆数目相等,那肯定是B胜 //但只要有非两两相同的,如xyz,A先, //A ...

  7. STL学习:STL库vector、string、set、map用法

    本文仅介绍了如何使用它们常用的方法. vector 1.可随机访问,可在尾部插入元素:2.内存自动管理:3.头文件#include <vector> 1.创建vector对象 一维: (1 ...

  8. Docker私有仓库3

    http://www.cnblogs.com/womars/p/5906435.html(上篇地址) 三.测试上两篇 #测试一下 [root@lh- data]# pwd /opt/data [roo ...

  9. flex安装debug

    1.解决 不是最新版本的问题: cmd-->regedit-->HKEY_LOCAL_MATCHING-->SOFTWARE-->MACROMEDIA -->FLASHP ...

  10. LeetCode OJ 88. Merge Sorted Array

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note:Yo ...