首页 > 试题广场 >

以下关于MySQL 8.0递归CTE的说法,哪项是正确的?W

[单选题]
以下关于MySQL 8.0递归CTE的说法,哪项是正确的?
WITH RECURSIVE cte AS (
SELECT id, parent_id, name, 1 AS level
FROM categories WHERE parent_id IS NULL
UNION ALL
SELECT c.id, c.parent_id, c.name, cte.level + 1
FROM categories c JOIN cte ON c.parent_id = cte.id
)
SELECT * FROM cte;
  • 如果categories表中存在循环引用(如A->B->A),MySQL会自动检测并终止递归
  • 可以通过cte_max_recursion_depth系统变量调整递归深度限制,MySQL默认已有上限(1000),循环引用在达到该限制时会报错终止
  • UNION ALL可以替换为UNION来自动去重并防止无限递归
  • 递归CTE中的递归部分可以包含GROUP BY、DISTINCT和聚合函数

这道题你会答吗?花几分钟告诉大家答案吧!