在 MySQL 中递归树结构
管理数据库中的分层数据可能是一个挑战。一种常见的方法涉及使用亲子关系,如所提供的问题所示。虽然查询直接后代很简单,但检索所有后代可能会更复杂。
MySQL 文档建议了几种处理分层数据的方法,包括以下方法:
对于给定的示例,使用路径枚举方法,以下查询将检索父位置的所有后代:
WITH RECURSIVE descendant_path AS ( SELECT id, path FROM locations WHERE id IN (SELECT location_id FROM location_parent WHERE parent_id = '$locationid') UNION ALL SELECT l.id, CONCAT(dp.path, ',', l.id) FROM locations l JOIN descendant_path dp ON l.path LIKE CONCAT(dp.path, '%') ) SELECT id FROM descendant_path;
此查询使用递归 CTE(公共表表达式)来迭代树结构并为每个后代位置构建路径。通过在初始查询中指定起始位置,可以一次性检索所有后代。
以上是如何递归检索MySQL树结构中的所有后代?的详细内容。更多信息请关注PHP中文网其他相关文章!