【问题标题】:Nested Sets: Retrieving Multiple Paths嵌套集:检索多个路径
【发布时间】:2012-05-23 19:16:59
【问题描述】:

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

【问题讨论】:

  • 只需在节点名称(node.name = 'Name1' OR node.name = 'Name2')加括号

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


【解决方案1】:

是的,当然。

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 并使用空间索引来加快查询速度。

详情请参阅我的博客中的此条目:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-20
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 2021-09-05
    • 2021-12-05
    • 1970-01-01
    相关资源
    最近更新 更多