码迷,mamicode.com
首页 > 数据库 > 详细

sql中的递归

时间:2014-11-05 19:17:03      阅读:285      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   ar   sp   on   2014   log   bs   

开发的时候有个需求,就是根据前台选择的编码,然后查找该节点下所有的结果集,后来百度了一下 sql中 也有递归,

先看下结果

bubuko.com,布布扣

with tmps as
(
select * from dbo.t_ew_dutyRelation where parentCode = ‘parent2‘
union all
SELECT d2.* from tmps
inner join t_ew_dutyRelation d2 on tmps.dutyCode = d2.parentCode
)
SELECT * FROM tmps

 

简单解释一下:

with as属于sql server新特性CTE(Common Table Expression)的关键字,用来储存临时结果集。常用于代替子查询。

上面demo中可以理解为,找出父节点为“parent2”的记录后,存放在临时表tmps 中,然后临时表和t_ew_dutyRelation进行内连接,找出它的子记录。子记录和第一条记录union后作为tmps 新的结果集继续进行内连接,找出新的子记录。

 

大家如果有什么更好的方法,可以说出来,共同学习!

sql中的递归

标签:blog   http   io   ar   sp   on   2014   log   bs   

原文地址:http://www.cnblogs.com/jamestuhao/p/4076926.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!