注意:MySQL with Recursive功能在MySQL 8.0版本中才被正式引入,使用该功能建议使用该版本或者以上版本。
WITH RECURSIVE cte AS (
SELECT id, name, parent_id FROM TABLE_NAME WHERE parent_id = 0 -- 初始化递归查询,从根节点开始
UNION ALL
SELECT t.id, t.name, t.parent_id FROM TABLE_NAME t
JOIN cte ON cte.id = t.parent_id -- 递归查询,连接子节点和父节点
)
SELECT id, name, parent_id FROM cte;