本人现从事数据整理工作,现有一个表,里面存放的是一个树的数据结构,现在要增加一字段(F_ID)来保存(也就是每个树节点的父节点的ID),如果是根节点F_ID j就为空即可!现举例来说明表的结构:
table 1:
ID DOT F_ID(新加)
A null null 结果:F_ID=null根
A01 null null 结果:F_ID=A
A01B null null 结果:F_ID=A01
A01B 1/00 null null 结果:F_ID=A01B
A01B 1/02 . null 结果:F_ID=A01B 1/00
A01B 1/04 .. null 结果:F_ID=A01B 1/02
A01B 1/06 ... null 结果:F_ID=A01B 1/04
A01B 1/08 .. null 结果:F_ID=A01B 1/02
A01B 1/10 . null 结果:F_ID=A01B 1/00
........
用上面的例子:
ID 中 如果 len(ID)=1 and Dot is null 就为根,
len(ID)=3 and Dot is null;F_ID=A,
len(ID)=4 and Dot is null;F_id=A01,
len(ID)> 4 and Dot is null;F_ID=A01B ,
Dot有点的 点多的是点少的子,点相等的为同级。(可以看我写的结果)
现在数据量很大。需要查找每一条数据的父节点。然后放到F_ID中。
在sql中怎么解决,请大家帮助我,有好的建议也行!
------解决方案--------------------
借用楼上的数据~
-- 创建表
create table table1([ID] varchar(20),DOT varchar(20),F_ID varchar(20))
Go
-- 插入数据
insert table1 select 'A ',null,null
insert table1 select 'A01 ',null,null
insert table1 select 'A01B ',null,null
insert table1 select ID,null,null
insert table1 select 'A01B 1/02 ', '. ',null
insert table1 select 'A01B 1/04 ', '.. ',null