我的 CTE 为特定客户无限循环运行,我无法找出原因。
这是查询:
;WITH ClassTree
AS (SELECT ID, NAME, Parent_ID
FROM TableName
WHERE ID = 1
UNION ALL
SELECT T.ID, T.NAME, T.Parent_ID
FROM TableName T WITH (NOLOCK)
JOIN ClassTree
ON Parent_ID = ClassTree.ID
)
SELECT * FROM ClassTree
这里有一些东西可以用来找到你的周期。
结果:
我认为这应该为您找到问题记录。它将 a 添加
LEVEL
到您的层次结构中,然后查找存在于多个级别的单个 ID 记录。我要做的第一件事就是改变这个:
对此:
它可能正在尝试将 ClassTree 连接到自身,因为您没有在连接中指定表别名。