惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
Microsoft Azure Blog
Microsoft Azure Blog
B
Blog
S
SegmentFault 最新的问题
WordPress大学
WordPress大学
P
Proofpoint News Feed
Hugging Face - Blog
Hugging Face - Blog
MyScale Blog
MyScale Blog
A
About on SuperTechFans
雷峰网
雷峰网
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
T
The Blog of Author Tim Ferriss
MongoDB | Blog
MongoDB | Blog
博客园 - 【当耐特】
The Cloudflare Blog
F
Fortinet All Blogs
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
宝玉的分享
宝玉的分享
罗磊的独立博客
量子位
有赞技术团队
有赞技术团队
V
V2EX
Engineering at Meta
Engineering at Meta

博客园 - 塞北的雪

ShopEX 与 jQuery 冲突的解决办法 博文阅读密码验证 - 博客园 关于javascript的闭包之笔记 Linux top 命令详解 PIX配置大全 配置Cisco PIX防火墙 Javascript小技巧 - 塞北的雪 - 博客园 气吞山河,25硬盘组装超级存储服务器全案 Exchange Server 2003群集系统方案 prototype.js开发笔记 XP系统EFS加密破解的一线希望 如何编写 INF 文件 用Sql语句生成Sqlserver数据字典 用正则表达式取文章里的图片地址 SA帐号的改名和删除 爱因斯坦迷题:谁养鱼?(Java算法) 为MM两肋插刀之Crack蜘蛛纸牌 用Ollydbg手脱Armadillo V3.60加壳的DLL 用olldbg破解分析ocx控件
查找指定节点的所有子节点的示例函数
塞北的雪 · 2006-12-11 · via 博客园 - 塞北的雪

 查找指定节点的所有子节点的示例函数

可以形成1>2>3>4这种效果

--查询指定节点及其所有子节点的函数
CREATE FUNCTION f_Cid(@ID char(3))
RETURNS @t_Level TABLE(ID char(3),Level int)
AS
BEGIN
    
DECLARE @Level int
    
SET @Level=1
    
INSERT @t_Level SELECT @ID,@Level
    
WHILE @@ROWCOUNT>0
    
BEGIN
        
SET @Level=@Level+1
        
INSERT @t_Level SELECT a.ID,@Level
        
FROM tb a,@t_Level b
        
WHERE a.PID=b.ID
            
AND b.Level=@Level-1
    
END
    
RETURN
END
GO

--测试数据
CREATE TABLE tb(ID char(3),PID char(3),Name nvarchar(10))
INSERT tb SELECT '001',NULL ,'山东省'
UNION ALL SELECT '002','001','烟台市'
UNION ALL SELECT '004','002','招远市'
UNION ALL SELECT '003','001','青岛市'
UNION ALL SELECT '005',NULL ,'四会市'
UNION ALL SELECT '006','005','清远市'
UNION ALL SELECT '007','006','小分市'
GO--调用函数查询002及其所有子节点
SELECT a.*
FROM tb a,f_Cid('002') b
WHERE a.ID=b.ID
/*--结果
ID   PID  Name       
------ ------- ---------- 
002  001  烟台市
004  002  招远市
--
*/