sqlserver 简单的树形结构代码。

这篇文章介绍了如何使用SQL的CommonTableExpression(CTE)进行递归查询,以构建数据库中的层级结构。它从PID为-1的根节点开始,通过递归查询将所有子节点连接起来,形成完整的层次关系。关键在于内部的临时表(temp)和原始数据表(T_ACL_OU)之间的JOIN操作,确保了父节点和子节点的正确关联。
摘要由CSDN通过智能技术生成
  1. -- with一个临时表(括号中是你要查询的列名)
  2. with temp(ID,PID,Name,curLevel)
  3. as
  4. (
  5. --1:初始查询(这里的PID=-1 在我的数据中是最底层的根节点)
  6. select ID,PID,Name,1 as level from dbo.T_ACL_OU
  7. where Deleted = 0 and PID = -1
  8. union all
  9. --2:递归条件
  10. select a.ID,a.PID,a.Name, b.curLevel+1from T_ACL_OU a --3:这里的临时表和原始数据表都必须使用别名,不然递归的时候不知道查询的是那个表的列
  11. inner join
  12. temp b
  13. on ( a.PID=b.id) --这个关联关系很重要,一定要理解一下谁是谁的父节点
  14. )
  15. select * from temp --4:递归完成后 一定不要少了这句查询语句 否则会报错
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值