数据库
首页 > 数据库> > 数据库实现递归查询,获取节点的所有子孙节点

数据库实现递归查询,获取节点的所有子孙节点

作者:互联网

with cte as
(select orgid from fx_org where orgid ='138'
union all
select fx_org.orgid from fx_org  inner join cte on fx_org.parentid = cte.orgid )
select * from cte

这个地方使用的sqlServer的递归写法,如果使用的数据库是mysql的话,就需要下面的一种写法:

with RECURSIVE cte as
(select orgid from fx_org where orgid = '2'
union all
select fx_org.orgid from fx_org  inner join cte on fx_org.parentid = cte.orgid )
select * from cte;

其他的地方没有什么区别,只需要加一个RECURSIVE。

如果需要嵌套在另外的一个sql语句中:

	with cte as
(select orgid from fx_org where orgid ='138'
union all
select fx_org.orgid from fx_org  inner join cte on fx_org.parentid = cte.orgid )

select count(*) from cte inner join zw_zmhd on cte.orgid=zw_zmhd.bm where hdlx ='1'

这里的cte就像是一个新的表格

标签:递归,fx,数据库,cte,orgid,inner,org,节点,select
来源: https://blog.csdn.net/weixin_42334518/article/details/111045786