使用'WITH'子句管理层次数据时MySQL的问题

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

我很难让以下查询正常工作。我觉得我的所有设置都正确。我读到早期版本的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;

“会话标签”

mysql mysql-workbench ubuntu-18.04 mysql-error-1064 with-clause
1个回答
0
投票

您必须使用支持此语言构造的MySQL服务器。 Common Table Expressions(CTE)在MySQL 8.0中引入。

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