我有以下结构的会员表
GroupID MemberType MemberID
G1 user U1
G1 group G2
G2 user U2
G2 group G3
G3 group G1
在这里,我的需要是..需要使用GroupID获取组成员..
对于直接成员,我们可以通过在 where 查询中使用 GroupID 列轻松完成。
但要获得嵌套成员,我们需要递归执行此查询。为此,我使用了以下 CTE 查询。
;with cte as
(
select *, groupid as mastergroup,1 as level from mytable
union all
select t1.memberid, t1.membertype, null, cte.mastergroup, level+1
from cte
inner join mytable t1
on t1.groupid=cte.memberid
where cte.membertype='group'
)
select * from cte
where mastergroup='G1'
好的。如果嵌套组之间没有循环,则工作正常。但就我而言
我以这种方式具有循环结构...G1-->G2-->G3-->G1...所以在这种情况下,我的查询在 CTE 循环中无限期地运行。
任何人都可以帮我解决这个问题吗?......提前谢谢......