在没有“Connect By Prior”的情况下查询 MySQL 中的分层数据
在 MySQL 中,尽管没有显式的“Connect By Prior”子句,可以使用递归的组合来检索分层数据
递归遍历算法
要递归遍历像 tb_Tree 这样的分层表,请按照以下步骤操作:
此递归过程将继续,直到识别出所有叶节点。
基于深度的方法
如果您知道最大深度在树中,您可以重复将表与其自身连接以达到最深的级别,然后过滤掉任何剩余的 NULL 值。
嵌套集表示
或者,您可以修改表结构以使用嵌套集表示。这涉及添加额外的列来表示层次结构中每个节点的左边界和右边界。
检索子节点的示例查询
检索特定节点的所有子节点当 Id 等于 X 时,您将使用以下查询:
SELECT * FROM tb_Tree WHERE ParentId IN ( SELECT Id FROM tb_Tree WHERE ParentId = X UNION ALL /* Recursive traversal of children */ SELECT Id FROM tb_Tree WHERE Id IN ( SELECT Id FROM tb_Tree WHERE ParentId = X ) );
此查询递归地遍历层次结构,收集与子节点关联的所有 Id 值。
以上是如何在没有 CONNECT BY PRIOR 的情况下查询 MySQL 中的分层数据?的详细内容。更多信息请关注PHP中文网其他相关文章!