sql2005递归查询的例子

发布时间:2019-11-24编辑:脚本学堂
sql2005递归查询 sql递归查询的例子。数据表:groups,包含上下级关系,通过code和parentcode对应,code是本身的标记,parentcode是父节点的标记。

sql2005递归查询 sql递归查询的例子。
数据表:groups,包含上下级关系,通过code和parentcode对应,code是本身的标记,parentcode是父节点的标记。
以下的方法,可以产生类似树状的表。
有意研究sql递归查询的朋友,可以参考下。
 

复制代码 代码示例:
---sql www.jb200.com
with myTb(groupname,parentname,[level])
as(
select groupname,parentname,1 as level from groups Where parentcode=''
union all
select b.groupname,b.parentname,[level]+1 as [level]
from myTb inner join groups b
on myTb.code=b.parentcode)
select * from myTb

注意:
以上脚本在sql server 2005可以执行。
sql server 2000需要自写存储过程,然后递归生成。

union all前面是要找到根节点,后面是显示其子节点
连接关系是myTb.code=b.parentcode,顺序不能错位,
level是显示节点位于第几层,从1开始。

另附:oracle的写法:
 

复制代码 代码示例:
select level,a.* from groups
start with parentcode is null

是不是简单多了,oracle为什么牛,没道理啊。