0

我很难让以下查询正常工作。我觉得我已经正确设置了所有内容。我读到 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;

会话选项卡

4

1 回答 1

0

您必须使用支持这种语言结构的 MySQL 服务器。公用表表达式(CTE) 在 MySQL 8.0 中引入。

于 2020-05-30T08:51:41.473 回答