SQL2005递归查询语法


create table code_catalog_structure(catalogid nvarchar(10),col varchar(10),parentid nvarchar(10))
insert into code_catalog_structure select '我是一层的一','aaa','*ROOT*'
insert into code_catalog_structure select '我是一层的二','bbb','*ROOT*'
insert into code_catalog_structure select '我是二层的一','ccc','我是一层的一'
insert into code_catalog_structure select '我是二层的二','ddd','我是一层的二'
insert into code_catalog_structure select '我是三层的一','eee','我是二层的一'
insert into code_catalog_structure select '我是三层的二','fff','我是二层的二'
insert into code_catalog_structure select '我是三层的三','ggg','我是二层的二'
go
;with father as
(
select *,lev=0,seq=CAST(catalogid AS VARBINARY) from code_catalog_structure where parentid = '*ROOT*'
union all
select a.*,lev=lev+1,seq=CAST(seq+CAST(a.catalogid AS VARBINARY) AS VARBINARY) from code_catalog_structure a join father b on a.parentid = b.catalogid
)
select parentid,catalogid,lev,seq from father order by seq
/*
parentid catalogid lev
---------- ---------- -----------
*ROOT* 我是一层的一 0
我是一层的一 我是二层的一 1
我是二层的一 我是三层的一 2
*ROOT* 我是一层的二 0
我是一层的二 我是二层的二 1
我是二层的二 我是三层的二 2
我是二层的二 我是三层的三 2

(7 行受影响)

*/
go
drop table code_catalog_structure
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值