首页 > 数据库 > mysql教程 > 如何通过单个查询检索 MySQL 中特定目录的所有子目录?

如何通过单个查询检索 MySQL 中特定目录的所有子目录?

Mary-Kate Olsen
发布: 2025-01-05 13:53:44
原创
801 人浏览过

How to Retrieve All Subdirectories of a Specific Directory in MySQL with a Single Query?

使用 MySQL 递归在单个查询中检索子目录

考虑一个类似于目录结构的表:

folders_table
-----------------------
- INT id_folder
- INT id_folder_parent
- VARCHAR folder_name
登录后复制

挑战在于使用单个 SELECT 检索特定目录的所有子目录

解决方案:

传统的数据库结构无法有效支持该查询。要启用它,必须修改数据库结构。具体来说,引入了自引用关系来表示层次结构。

分步说明:

  1. 添加新列 left_index 来跟踪项目的顺序同一级别。
  2. 添加新列 right_index,以跟踪整个项目中的项目顺序
  3. 使用以下列创建一个新表:id_folder、id_folder_parent、left_index、right_index、folder_name。

修改完成后,可以使用以下查询来检索一次查询中任意深度的树:

SELECT *
FROM folders_table
WHERE left_index > (SELECT left_index FROM folders_table WHERE id_folder = <parent_folder_id>)
AND right_index < (SELECT right_index FROM folders_table WHERE id_folder = <parent_folder_id>)
ORDER BY left_index
登录后复制

资源进一步探索:

  • [在数据库中存储分层数据(SitePoint)](https://www.sitepoint.com/hierarchical-data-database/)
  • [管理分层数据MySQL](https://www.qrypt.co.uk/blog/managing-hierarchical-data-in-mysql)

以上是如何通过单个查询检索 MySQL 中特定目录的所有子目录?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板