从品牌网站建设到网络营销策划,从策略到执行的一站式服务
sqlserver查询树形结构的所有子节点
网站建设哪家好,找创新互联建站!专注于网页设计、网站建设、微信开发、小程序设计、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了姑苏免费建站欢迎大家使用!
用标准sql的with实现递归查询(sql2005以上肯定支持,sql2000不清楚是否支持):
with subqry(id,name,pid) as (
select id,name,pid from test1 where id = 5
union all
select test1.id,test1.name,test1.pid from test1,subqry
where test1.pid = subqry.id
)
select * from subqry;
使用sqlserver递推查询,可以直接查询出来。
参考资料:
WITH lmenu(nav_id,nav_name,nav_parentid,level) as
(
SELECT nav_id,nav_name,nav_parentid,0 level FROM nav nav_parentid=0
UNION ALL
SELECT A.nav_id, A.nav_name,a.nav_parentid, b.level+1 FROM gs_nav A,lmenu b where a.nav_parentid= b.nav_id and nav_id = 10
)
SELECT * from lmenu
具体SQL语句还需要自己验证一下,上面的自己看着乱写的。
你这写法是正确的,至少递归的数据已达到.只是显示方式不一样.
加个记录字段,并按记录字段排序即可完成以下效果:
--修改如下:
WITH rec(warecode,waresupercode,waerName,sort)
as
(
select warecode,waresupercode,waerName,warecode from DIC_WARE dw where dw.waresupercode IS NULL
UNION all
SELECT warecode,waresupercode,waerName,sort+'| '+warecode
from DIC_WARE a ,rec b on a.waresupercode=b.warecode
)
SELECT warecode,waresupercode,waerName
FROM rec order by sort
GO
测试数据效果图下:
希望能帮到你!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图