我有一张table A
用这种结构
| id | parent_id | permission_type |
我使用下面的递归cte查询来获取id为1的对象的所有子对象(在本例中)。
with recursive B (
id,
parent_id,
permission_type) as (
select id,
parent_id,
permission_type
from A
where (id = '1')
union all
select
t.id,
t.parent_id,
t.permission_type
from A t
inner join B
on t.parent_id = B.id
)select * from B;
问题是我不想用 permission_type = "no_permission"
也不是他们的孩子或后代。我想排除从具有 permission_type = "no_permission"
.
所以在本例中,我希望输出为:(排除树的红色分支)
| id | parent_id | permission_type |
====================================
| 1 | null | '' |
| 2 | 1 | '' |
| 3 | 2 | '' |
这在mysql中是可能的吗?如果是,怎么办?
注意:还有其他权限类型,但我认为在这里输入这些信息是不必要的。我关心的只是基于“no\u permission”权限类型排除分支的能力
1条答案
按热度按时间gt0wga4j1#