问题
The MySQL databse stores tree with the help of materialized path data structure. How to select all parents of the given node?
I use dot '.' as path separator, and database structure includes 'level' field that indicates the depth of a node in the tree.
Lets I have those tree and need all parents of the node 'a.b.d.e':
id | path
a | a
b | a.b
c | a.b.c
d | a.b.d
e | a.b.d.e
f | a.f
The script should return:
a
a.b
a.b.d
a.d.d.e (optional)
How to do that in MySQL?
回答1:
I've found the solution in the question posted by @quambo. Here it is:
SELECT * FROM table
WHERE ? LIKE id||%
ORDER BY path
Insted of '?' it is necessary to place the path to the given node.
SELECT * FROM table
WHERE 'a.b.d.e' LIKE id||%
ORDER BY path
来源:https://stackoverflow.com/questions/41783113/sql-how-to-select-all-parent-nodes-in-materialized-path