mysql - 嵌套集 : Retrieving Multiple Paths

标签 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;

最佳答案

是的,当然。

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

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

关于mysql - 嵌套集 : Retrieving Multiple Paths,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10726438/

相关文章:

python - MySQL 命令与 Python 不同步

php - MYSQL,在这种情况下如何获取字段值为 'x'的行?

mysql - 为什么 MySQL 查询中的三行顺序不正确?

php - 如何在 MySQL 和 PHP 中使用嵌套集获取结构化结果?

mysql - 以最佳方式存储分层数据 : NoSQL or SQL

javascript - javascript中的树遍历

php - 获取id并更新数据库

mysql - Bash MySQL 分割文件位置

mysql - 使结果排序与给定的 WHERE IN(a,b,c) 条件匹配的查询

python-3.x - Pyspark DataFrame OrderBy的列列表