MySQL-嵌套集模型:在节点中搜索

MySQL-嵌套集模型:在节点中搜索,sql,mysql,nested-sets,Sql,Mysql,Nested Sets,假设我的表中有一个名为“页面”的树: 我想按节点的名称搜索。例如“bar%”。例外输出应为: Foo -- Bar 1 -- Bar 2 -- Bar 3 Bar -- Bar 4 我找不到在MySQL中编写正确查询的解决方案。搜索不是问题-我不知道如何在搜索结果中获得节点的深度 SELECT mc.*, ( SELECT COUNT(*) FROM page mp WHERE mc.lft B

假设我的表中有一个名为“页面”的树:

我想按节点的名称搜索。例如“bar%”。例外输出应为:

Foo
  -- Bar 1
  -- Bar 2
     -- Bar 3
Bar
  -- Bar 4
我找不到在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%'
如果将
(lft,rgt)
创建为单个字段
设置行字符串
,并在此字段上建立空间索引,则可以改进此查询:

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%'
有关更多详细信息,请参阅本文:

如果将
(lft,rgt)
创建为单个字段
设置行字符串
,并在此字段上建立空间索引,则可以改进此查询:

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%'
有关更多详细信息,请参阅本文: