首先,我假设这是一个有向图。如果无向图包含单个边,则其周期很短。
递归CTE唯一棘手的部分是在遇到周期时停止-因此您不会得到无限递归。
试试这个:
with cte as ( select e.object_a, e.object_b, iscycle = 0 from edges e union all select cte.object_a, e.object_b, (case when cte.object_a = e.object_b then 1 else 0 end) as iscycle from cte joinedges eon cte.object_b = e.object_a where iscycle = 0 )select max(iscycle)from cte;



