【发布时间】:2020-11-23 19:31:57
【问题描述】:
如果我搜索Pro,我需要获取Electronics > Mobile > Iphone > Pro 之类的数据。
也就是说,
Proparent_id是3sibling_order3是Iphone。
Iphoneparent_id是2sibling_order2是Mobile。
Mobileparent_id是1sibling_order1是Electronics。
另一个例子:
如果我搜索Mobile,那么我需要获取Electronics/Mobile 之类的数据。
我尝试了递归查询,但它不起作用Syntax error。
WITH RECURSIVE category_path (id, name, path) AS
(
SELECT id, name, name as path
FROM categories
WHERE parent_id IS NULL
UNION ALL
SELECT c.id, c.name, CONCAT(cp.path, ' > ', c.name)
FROM category_path AS cp JOIN categories AS c
ON cp.id = c.parent_id
)
SELECT * FROM category_path
ORDER BY path;
任何帮助将不胜感激。
id name sibling_order parent_id
1 Electronics 1 NULL
2 Mobile 2 1
3 Iphone 3 2
4 Pro 4 3
5 SE 5 3
6 XR 6 3
7 Samsung 7 2
8 Galaxy 8 8
9 Note 9 8
10 Home & Furniture 10 NULL
11 Kitchen Storage 11 11
12 Lunch Box 12 12
13 Living Room Furniture 13 11
14 Sofa 14 13
【问题讨论】:
-
你能分享完整准确的错误信息吗?
-
SELECT @@version;报告什么?如果低于 MySQL 8.0,则不支持递归查询。 -
可以使用CTE 完成分层数据 - 请参阅reportsTo 示例。
-
@BillKarwin Mysql 服务器版本:5.7.29
标签: mysql hierarchical-data recursive-query