今天遇到一个问题,有一张表,父级运营商、子运营商通过Id、RootId来确认父子关系。子运营商存在N级。而我需要通过某父级ID来获取旗下所有子运营商。用代码来实现太过麻烦,这时候sql递归会大大提高查询速度,下面是解决案例:

with ChildMenu as(
select * from 数据表
where Id= '父级ID'
union all select 数据表.* from 数据表 inner join ChildMenu
on 数据表.RootId= ChildMenu.Id)
select * from ChildMenu