嵌套集:检索多个路径

时间:2012-05-23 19:16:59

标签: mysql sql-order-by nested-sets

是否可以从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;

1 个答案:

答案 0 :(得分: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中的效率非常低,因为连接条件不可搜索。

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

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