您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

MySQL-是否可以获取层次结构中的所有子项目?

MySQL-是否可以获取层次结构中的所有子项目?

这只是一个简单的 邻接模型 表吗?这样一来,在不知道最大深度的情况下就不可能进行查询

值得深思的是在MySQL中管理分层数据(尽管我不主张使用 嵌套集模型 来处理定期更改的数据)。

更具体地讲,使用很多(左)联接:如果左联接的数量与树的最大深度一样多,则可以在一个查询中进行。这就是很多人倾向于保存特定类别的“深度”的原因,因此您将能够过滤并限制对同一表的联接数量,使其更为合理。

就个人而言,为了定期更改数据:我倾向于在插入/更新上配置触发器,该触发器将基于id保存/缓存节点的当前“路径”(例如:路径为“ 12/62/28/345” ‘,其中定界符之间的每一步/都是父节点的主键,其顺序正确(345的父级为28,28的父级为62,依此类推),因此我可以通过这样的一个联接来查询它(/用作分隔符):

SELECT j.*
FROM tablename o
JOIN tablename j
WHERE j.path LIKE CONCAT (o.path,'/%')
AND  j.id != o.id  -- skip parent asked for.
WHERE o.id = <the id of the node you're looking for>;
MySQL 2022/1/1 18:52:10 有324人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶