Bal*_*ald 1 mysql sql nested-sets
我只想说我的桌子上有一棵名为"page"的树:
Foo
-- Bar 1
-- Bar 2
-- Bar 3
-- Some foo
-- Some value
Bar
-- Bar 4
Run Code Online (Sandbox Code Playgroud)
我想按节点名称搜索.例如"bar%".预期的输出应该是:
Foo
-- Bar 1
-- Bar 2
-- Bar 3
Bar
-- Bar 4
Run Code Online (Sandbox Code Playgroud)
我找不到在MySQL中编写正确查询的解决方案.搜索不是问题 - 我不知道如何在搜索结果中获得节点的深度.
SELECT mc.*,
(
SELECT COUNT(*)
FROM page mp
WHERE mc.lft BETWEEN mp.lft AND mp.rgt
) AS depth
FROM page mc
WHERE mc.name LIKE 'bar%'
Run Code Online (Sandbox Code Playgroud)
如果您将自己创建(lft, rgt)为单个字段sets LineString并SPATIAL INDEX在此字段上创建,则可以改进此查询:
SELECT mc.*,
(
SELECT COUNT(*)
FROM page mp
WHERE MBRWIthin(Point(0, mc.lft), mp.sets)
) AS depth
FROM page mc
WHERE mc.name LIKE 'bar%'
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅此文章:
| 归档时间: |
|
| 查看次数: |
790 次 |
| 最近记录: |