为什么 MySQL 递归公用表表达式 (CTE) 以无限循环运行?

问题描述 投票:0回答:1

我一直在看这个,我不知道为什么这个 CTE 会一直运行到超时。有人看到我没有看到的东西吗?

请注意,InventoryTimeline.RecID 是连续的行号(1、2、3、...)。我希望此查询为每个 ItemNum 生成三行。

WITH RECURSIVE CTE (RecID, ItemNum) 
AS 
(
    SELECT
        T.RecID, 
        T.ItemNum
    FROM
        InventoryTimeline T
    WHERE
        T.RecID = 1
    
    UNION ALL
    
    SELECT 
        T.RecID,
        T.ItemNum
    FROM 
        InventoryTimeline T INNER JOIN CTE ON
            T.RecID = CTE.RecID + 1 AND
            T.ItemNum = CTE.ItemNum
    WHERE 
        T.RecID <= 3
)
SELECT *
FROM CTE;
mysql common-table-expression
1个回答
0
投票

将其作为存储过程运行并不能解决我在 MariaDB 上遇到的挑战。

我也面临着同样的挑战。它运行几秒钟并返回消息

错误代码:2013。查询期间失去与 MySQL 服务器的连接

其他人也有这个问题吗?

© www.soinside.com 2019 - 2024. All rights reserved.