2

是否可以从 MySQL 嵌套集中检索多个路径?重点是 where 条件的第二行。

SELECT parent.name
FROM nested_category AS node,
    nested_category AS parent
WHERE node.lft BETWEEN parent.lft AND parent.rgt
    AND node.name = 'Name1' OR node.name = 'Name2'
ORDER BY node.lft;
4

1 回答 1

2

是的当然。

SQL,OR的优先级低于AND,因此您需要将查询重写为:

SELECT  parent.name
FROM    nested_category AS node
JOIN    nested_category AS parent
ON      node.lft BETWEEN parent.lft AND parent.rgt
WHERE   node.name IN ('Name1', 'Name2')
ORDER BY
        node.lft;

这个查询效率很低,MySQL因为连接条件不是 sargable。

您可能希望将集合存储为LineString并使用空间索引来加快查询速度。

有关详细信息,请参阅我的博客中的此条目:

于 2012-05-23T19:20:54.270 回答