我有一个递归查询,当我运行它时会返回错误;在其他数据库中(有更多数据)我没有问题。在我的情况下,此查询返回 2 个列(ID_PARENT 和 ID_CHILD)进行递归,因为我的树可以有多个级别,我只想有“直接”父级。
注意:我尝试将 OPTION (MAXRECURSION 0) 放在查询的末尾,但没有运气。以下查询只是整个查询的一部分,我尝试仅将 OPTION 放在具有连续运行查询的“大查询”的末尾,但没有显示错误。
SQL Server 中出现错误:
“语句终止。在语句完成之前,最大递归 100 已用完”
查询如下:
WITH q
AS (SELECT ID_ITEM,
ID_ITEM AS ID_ITEM_ANCESTOR
FROM ITEMS_TABLE i
JOIN ITEMS_TYPES_TABLE itt
ON itt.ID_ITEM_TYPE = i.ID_ITEM_TYPE
UNION ALL
SELECT i.ID_ITEM,
q.ID_ITEM_ANCESTOR
FROM q
JOIN ITEMS_TABLE i
ON i.ID_ITEM_PADRE = q.ID_ITEM
JOIN ITEMS_TYPES_TABLE itt
ON itt.ID_ITEM_TYPE = i.ID_ITEM_TYPE)
SELECT ID_ITEM AS ID_CHILD,
ID_ITEM_ANCESTOR AS ID_PARENT
FROM q
我需要一个建议来重新编写此查询以避免递归错误并查看很少的数据。