您可以使用递归CTE来检测循环:
with prev as ( select RowId, 1 AS GenerationsRemoved from YourTable union all select RowId, prev.GenerationsRemoved + 1 from prev inner join YourTable on prev.RowId = ParentRowId and prev.GenerationsRemoved < 55)select * from prevwhere GenerationsRemoved > 50
这确实需要您指定最大递归级别:在这种情况下,CTE会运行到55,并且它将选择的子行超过50个的错误行。



