/*

递归查询 塗聚文
---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

最新文章

  1. Android数据存储-通过SharedPreferences实现记住密码的操作
  2. C语言样式的文件操作函数
  3. ODAC(V9.5.15) 学习笔记(十六)直接访问模式
  4. Nginx Google 扩展
  5. ORACLE R12 MOAC
  6. 【暑假】[数学]UVa 10375 Choose and divide
  7. Php AES加密、解密与Java互操作的问题
  8. EF项目中应用出现问题???
  9. android怎样查看当前project哪些profile是打开的
  10. profile与bashrc
  11. sendemail 发送成功Email was sent successfully!邮箱却收不到邮件
  12. memcached subList序列化问题
  13. vuex的一些学习
  14. 微服务架构:Eureka参数配置项详解
  15. 【转】JSF中的三大核心组件 UI标签的详细介绍和使用举例
  16. UBANTU zongjie
  17. java基础(三) -基本数据类型
  18. vue-layer
  19. linux 查看、关闭 ssh pts/n登录的用户
  20. mac下phpstrom安装主题和主题推荐

热门文章

  1. handler消息机制
  2. CSU 1640 机智的刷题方式
  3. 第一百一十四节,JavaScript文档对象,DOM进阶
  4. iOS开发加快审核app
  5. hdu_5900_QSC and Master(区间DP)
  6. ResultSet 的Type属性 TYPE_FORWARD_ONLY, TYPE_SCROLL_I
  7. 文件断点续传原理与实现—— ESFramework 通信框架4.0 进阶(12)
  8. PHP7新功能及语法变化总结
  9. Java 水仙花数
  10. Gentoo网络配置