gpt4 book ai didi

sql - MySQL - 嵌套集模型 : searching in nodes

转载 作者:行者123 更新时间:2023-11-29 04:31:17 25 4
gpt4 key购买 nike

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

Foo
-- Bar 1
-- Bar 2
-- Bar 3
-- Some foo
-- Some value
Bar
-- Bar 4

我想按节点名称搜索。例如“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) 创建为单个字段 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%'

有关详细信息,请参阅本文:

关于sql - MySQL - 嵌套集模型 : searching in nodes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1974541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com