递归 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;
此查询的工作原理如下:
此方法可确保所有子文件夹无论文件夹和子文件夹在层次结构中的位置如何,都会检索它们,从而为给定的“idFolder”值提供完整的列表。
以上是如何递归检索MySQL中不同级别的分层子文件夹?的详细内容。更多信息请关注PHP中文网其他相关文章!