Проблема с MySQL при использовании предложения WITH для управления иерархическими данными - PullRequest
0 голосов
/ 29 мая 2020

Мне сложно заставить следующий запрос работать правильно. Я чувствую, что все настроено правильно. Я читал, что более ранние версии MySQL Workbench не поддерживали with. Я обновил Ubuntu и использую MySQL Workbench 8.0.20. Однако, когда я пытаюсь использовать предложение with, MySQL продолжает говорить мне, что with недопустимо в позиции для версии сервера. Цель состоит в том, чтобы перечислить мои данные в иерархическом порядке. Для этого я использую одну таблицу с TestCat_2 в качестве первичного ключа и Parent_id. Я раньше не делал подобных запросов, поэтому надеюсь, что это просто что-то простое, чего мне не хватает. В качестве примера того, что я пытаюсь выполнить sh, я опубликую 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;

Session Tab

1 Ответ

0 голосов
/ 30 мая 2020

Вы должны использовать MySQL сервер, который поддерживает эту языковую конструкцию. Общие табличные выражения (CTE) были введены в MySQL 8.0.

...