如何递归检索MySQL中不同级别的分层子文件夹?

Barbara Streisand
发布: 2024-11-01 17:11:30
原创
427 人浏览过

How to Recursively Retrieve Hierarchical Child Folders in MySQL with Varying Levels?

递归 MySQL 查询检索不同级别的分层子文件夹

管理分层数据结构时,例如嵌套文件夹或树状关系,找到所有的孩子及其潜在的后代可能具有挑战性。本文介绍了一个 MySQL 查询,它通过递归遍历分层“Folder”表来有效地解决此需求。

此示例中使用的“Folder”表具有三列:“idFolder”、“FolderName”和“ idFolderParent',代表父子关系。目标是在单个查询中获取给定“idFolder”的所有子文件夹,包括子子文件夹。

以前的解决方案面临的挑战之一是处理父文件夹未保存在特定文件夹中的情况数据库中的顺序。为了克服这个问题,我们提出了一个依赖于 GROUP_CONCAT() 函数和自定义变量的查询。

查询:

SELECT GROUP_CONCAT(lv SEPARATOR ',') FROM (
  SELECT @pv:=(SELECT GROUP_CONCAT(idFolder SEPARATOR ',') FROM Folder
  WHERE FIND_IN_SET(idFolderParent, @pv)) AS lv FROM Folder
  JOIN (SELECT @pv:=5) tmp
) a;
登录后复制

此查询的工作原理如下:

  1. 它使用目标文件夹的“idFolder”初始化自定义变量@pv(在本例中, 5).
  2. 内部查询递归地搜索以@pv为父级的所有子'idFolder'值。
  3. 结果被分组并连接,用逗号分隔,形成一个字符串包含所有子文件夹和子文件夹的“idFolder”值。

此方法可确保所有子文件夹无论文件夹和子文件夹在层次结构中的位置如何,都会检索它们,从而为给定的“idFolder”值提供完整的列表。

以上是如何递归检索MySQL中不同级别的分层子文件夹?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!