在 SQL 中进行递归查询以级联获取数据

Doing a recursive query in SQL to get data in cascade

考虑一下您有 table 个用户的场景。用户分配了一个角色和一个引用字段,该字段是具有更高角色的其他用户的 ID。假设我们有 5 个角色,第五个角色更高。 referer id 始终是添加该用户的用户ID,只能在一个角色上级

我想获取角色 5 以下的所有用户(从角色 4 开始),但他们必须被用户引用或被我的用户引用的用户等等。示例:

User1: [ role: 5, referer: 0 (because is the first user), id: 1]
User2: [ role: 4, referer: 1, id:2]
User3: [ role: 4, referer: 44, id: 3]
User4: [ role: 3, referer: 2, id: 4]
User6: [ role: 2, referer: 4, id: 5]
User7: [ role: 1, referer: 5, id: 6]
User8: [ role: 1, referer: 44, id: 7]

所以我想使用 User1 数据进行查询,响应应该有 User2、User4、User6、User7。

如有任何帮助,我们将不胜感激。

使用recursive CTE

with cte as
(Select * from tbl where id=1
union all 
Select u.id, u.role,u.referer from tbl u
join cte c on c.id = u.referer
)
Select * from cte where role <(Select role from tbl where id=1)