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

推荐订阅源

云风的 BLOG
云风的 BLOG
M
MIT News - Artificial intelligence
博客园 - Franky
J
Java Code Geeks
V
Visual Studio Blog
G
Google Developers Blog
罗磊的独立博客
MongoDB | Blog
MongoDB | Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Recent Announcements
Recent Announcements
Last Week in AI
Last Week in AI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Stack Overflow Blog
Stack Overflow Blog
博客园 - 司徒正美
The GitHub Blog
The GitHub Blog
腾讯CDC
阮一峰的网络日志
阮一峰的网络日志
V
V2EX
博客园 - 【当耐特】
IT之家
IT之家
I
InfoQ
U
Unit 42
C
Check Point Blog
Martin Fowler
Martin Fowler

博客园 - NPPYQ

随便唠叨下 最近的事情 远程交易中的运费问题(转自魏武挥) 浦发 同城跨行取款突然收费了 2010年8月初 泉州将地震 预言还是谣言? Oracle Flashback 技术 总结 (转载) sqlserver2005 xml字段的读写操作 - NPPYQ - 博客园 清空数据库中所有表数据的方法 ORA-08177: 无法连续访问此事务处理 (转载) Biztalk使用NativeSQL TableChangeEvent和Query 从Oracle数据库读取数据 SQL SERVER 2005中的Schema详解 如何根据值查找所在的表和字段 DOTNET网站优化(转载) SQLServer 2005新功能,一些性能方面问题,sql 经典语句(转载) 使用SqlBulkCopy类结合DataTable类快速完成对目标为SQLSERVER的数据交换 SQL SERVER 中构建执行动态SQL语句 ORACLE和SQL SERVER数据交换的二进制问题 MOSS内容数据库网站容量达到最大 导致无法新建网站 在级别Configuration 上无法解析urn 错误 滴滴心血化彩虹——记县首届名师邓四喜
sql使用递归更新树级表记录
NPPYQ · 2010-05-24 · via 博客园 - NPPYQ

表结构如下

ORG_INFO

ORG_ID,ORG_PARENT_ID,ORG_PARENT_PATH

其中需更新ORG_PARENT_PATH字段,该字段值为父节点的ORG_PARENT_PATH+’.’+父节点的ORG_ID

思路

先找出根节点,设置好其ORG_PARENT_PATH

依次递归找出子节点,更新ORG_PARENT_PATH字段值

代码如下

代码

Declare @Id nvarchar(36)  
Set @Id = '549C2E32-3927-4E5E-AA26-993B460D067A'---在此修改父节点  

With RootNodeCTEee(ORG_ID,ORG_PARENT_ID,ORG_PARENT_PATH)  
As  
(  
    
Select ORG_ID,ORG_PARENT_ID,ORG_PARENT_PATH From ORG_INFO Where ORG_ID In (@Id)  
    
Union All  
    
Select ORG_INFO.ORG_ID,ORG_INFO.ORG_PARENT_ID,ORG_INFO.ORG_PARENT_PATH From RootNodeCTEee  
        
Inner Join ORG_INFO
        
On RootNodeCTEee.ORG_ID = ORG_INFO.ORG_PARENT_ID
)
select * into #T from RootNodeCTEee
--select * from #T 
declare @ORG_ID varchar(36--
declare @ORG_PARENT_ID varchar(36--
declare @ORG_PARENT_PATH varchar(512--
declare @TempORG_PARENT_PATH varchar(512--
Declare row Cursor For    --声明游标row 
Select ORG_ID,ORG_PARENT_ID,ORG_PARENT_PATH From #T--
--
select * from RootNodeCTEee 

Open row   
Fetch Next From row into @ORG_ID,@ORG_PARENT_ID,@ORG_PARENT_PATH   --
Fetch Next From row into @ORG_ID,@ORG_PARENT_ID,@ORG_PARENT_PATH   --
While @@FETCH_STATUS = 0              --完成状态
begin
print(@ORG_ID+'__'+@ORG_PARENT_ID+'__'+@ORG_PARENT_PATH)
select @TempORG_PARENT_PATH= ORG_PARENT_PATH + '.'+ORG_ID from ORG_INFO where ORG_ID=@ORG_PARENT_ID  
update ORG_INFO set ORG_PARENT_PATH = @TempORG_PARENT_PATH where ORG_ID = @ORG_ID Fetch Next From row into @ORG_ID,@ORG_PARENT_ID,@ORG_PARENT_PATH end
Close row
Deallocate row drop table #T 

总结

使用With可以递归查找数据生成表

当然也可以直接写SP完成

首次使用LiveWriter

不知道怎么设置代码格式和设置摘要

发布成日记了

网页进入博客园

手动更改

还是手动方便呀