SQL:如何选择实体化路径中的所有父节点?

时间:2017-01-21 18:46:18

标签: mysql tree hierarchy

MySQL数据库借助物化路径数据结构存储树。如何选择给定节点的所有父节点?

我使用点'。'作为路径分隔符,数据库结构包括“级别”字段,用于指示树中节点的深度。

让我拥有那些树并且需要节点'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

脚本应返回:

a
a.b
a.b.d
a.d.d.e (optional)

如何在MySQL中做到这一点?

1 个答案:

答案 0 :(得分:0)

我在question posted by @quambo找到了解决方案。这是:

SELECT * FROM table
WHERE ? LIKE id||%
ORDER BY path

Insted of'?'有必要将路径放置到给定节点。

SELECT * FROM table
WHERE 'a.b.d.e' LIKE id||%
ORDER BY path