一条sql语句顺序查询出父类的所有子类 如下图:用的是sql Server 2008 20
idnameparentId1帮助02新闻03简介14新手上路15通知26公告27找回密码48激活账号4。。。。。要求查询出来时,结果为:1帮助03简介14联系方式17找...
id name parentId
1 帮助 0
2 新闻 0
3 简介 1
4 新手上路 1
5 通知 2
6 公告 2
7 找回密码 4
8 激活账号 4
。。。。。
要求查询出来时,结果为:
1 帮助 0
3 简介 1
4 联系方式 1
7 找回密码 4
8 激活账号 4
2 新闻 0
5 通知 2
6 公告 2 展开
1 帮助 0
2 新闻 0
3 简介 1
4 新手上路 1
5 通知 2
6 公告 2
7 找回密码 4
8 激活账号 4
。。。。。
要求查询出来时,结果为:
1 帮助 0
3 简介 1
4 联系方式 1
7 找回密码 4
8 激活账号 4
2 新闻 0
5 通知 2
6 公告 2 展开
3个回答
展开全部
SQL 2005及以上可以使用CTE实现递归。
with tmp (ID,Name,ParentID,Level,HierarchyCode)
as(
select ID,Name,ParentID,1,convert(varchar,convert(varchar,ParentID)+'->'+convert(varchar,ID))
from 表名 where ParentId=0 --已知根节点是0
UNION ALL
select a.ID,a.Name,a.ParentID,Level+1,convert(varchar,HierarchyCode+'->'+convert(varchar,a.ID))
from 表名 a inner join tmp b on a.ParentID=b.ID
)
select * from tmp order by HierarchyCode
结果如下:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询