频道栏目
首页 > 数据库 > 其他综合 > 正文
一张表保存c盘下所有文件的路径
2014-01-06 08:39:08         来源:skyandcode的专栏  
收藏   我要投稿
问题:如何利用一张表,存放c盘的所有文件路径,然后可以查出它的完整路径?思路是这样的,用一张表,有一个id,一个 【parentid】存放父文件的路径

这样,这样不断的根据parentid查找,一直找到 null 就可以实现了。

但是实际的sql语句要如何写了,今天在csdn遇到这个问题。以下是解决方案:

1.利用 with 关键字 该方法有一个重要的特点,就是在with里面可以引用自己,这样就构成[递归查询](见数据库帮助)

2.递归查询里的第一个定位(union all前面) 称为定位成员。如果要使用递归查询,必须使用 union all(没有编译不能通过),连接定位成员和第一个递归

3.递归查询后的结果,会赋值给引用的自己

4.递归的结束条件是,当递归返回的结果集为空时(注意,使用了union all会去掉重复的行,所以,才会有空)

DECLARE @t TABLE 
(ID  int,
 ParentID int,
 FName varchar(30))
 
insert into @t
select 1,NULL,'C:'      union all
select 2,1,'windows'    union all
select 3,1,'system'     union all
select 4,2 ,'mywindos'  union all
select 5,4,'protectapp' union all
select 6,3,'sql server' union all
select 7,6,'sql prompt'
--递归查询
;with t
as
(
select ID,ParentID,FName,FName tPath
from @t
where ParentID is null
union all
select t2.ID,t2.ParentID,t2.FName,
       CAST(t1.tPath+'\'+t2.FName AS varchar(30)) tPath ----这里必须强制将递归部分的tPath转换
from t t1
join @t t2 on t1.ID = t2.ParentID
)
 
select *
  from t
点击复制链接 与好友分享!回本站首页
相关TAG标签 路径 文件 张表
上一篇:归档日志管理
下一篇:Mybatis入门案例--增删改查
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站