我很难让以下查询正常工作。我觉得我已经正确设置了所有内容。我读到 MySQL Workbench 的早期版本不支持'with'。我更新了 Ubuntu 并运行 MySQL Workbench 8.0.20。但是,当我尝试使用 'with' 子句时,MySQL 一直告诉我 with 在服务器版本的位置无效。目标是以分层方式列出我的数据。为此,我使用了一张表,其中 TestCat_2 作为我的主键和 Parent_id。我以前没有真正做过这样的查询,所以我希望这只是我缺少的一些简单的东西。对于我想要完成的一个例子,我将发布我试图关注的两个博客的 URL。我想显示整棵树。否则,如果有人可以帮助我找到解决方法,我将不胜感激。
https://www.mysqltutorial.org/mysql-adjacency-list-tree/
https://www.akki.io/blog/mysql-adjacency-list-model-for-hierarchical-data-using-cte/
我的查询:
WITH RECURSIVE category_path (TestCat_2, TestCat2_name, path) as
(
select TestCat_2, TestCat2_name, TestCat2_name as path
from TestCat
where Parent_id is null
union all
select t.TestCat_2, t.TestCat2_name, concat(tp.path, ' > ', t.TestCat2_name)
from category_path as tp join TestCat as t
on tp.TestCat_2 = t.Parent_id
)
select TestCat_2, TestCat2_name, path from category_path
order by path;