递归查询失败

时间:2018-09-25 17:37:11

标签: mysql sql

我有下表

TOPIC_NO    TOPIC_NAME  parent_no
54          Intro Main  0
56          LTCP        54
57          Intro Main  54
59          Intro       57
62          Link Demo   0

对于给定的主题,我想列出所有的孩子,一个孩子,一个孩子,等等。我正在尝试构建递归查询,但遇到了“ The maximum recursion 100 has been exhausted before statement completion。”

以下是我到目前为止所做的。任何帮助将不胜感激

WITH TEMP(TOPIC_NO) AS (
SELECT TOPIC_NO FROM EDUDB.TOPICS WHERE TOPIC_NO= 54
UNION ALL 
SELECT B.TOPIC_NO FROM EDUDB.TOPICS A, TEMP B
WHERE A.PARENT_NO = B.TOPIC_NO
AND A.PARENT_NO <> 0
)
SELECT * FROM TEMP;

1 个答案:

答案 0 :(得分:1)

您有一个小错误。见下文:

WITH TEMP(TOPIC_NO) AS (
SELECT TOPIC_NO FROM EDUDB.TOPICS WHERE TOPIC_NO= 54
UNION ALL 
SELECT A.TOPIC_NO FROM EDUDB.TOPICS A, TEMP B -- here!
WHERE A.PARENT_NO = B.TOPIC_NO
AND A.PARENT_NO <> 0
)
SELECT * FROM TEMP;

您必须获得A.TOPIC而不是B.TOPIC