如何在 mySQL查询中实现递归查找父级和子集?
时间: 2024-09-17 07:05:53 浏览: 46
MySQL通过自定义函数实现递归查询父级ID或者子级ID
在 MySQL 查询中实现递归查找父级和子集通常需要使用自连接(self-join)和递归 Common Table Expression (CTE) 或者存储过程。这里是一个基本的例子,假设有一个名为 `tree` 的表,有 `parent_id` 和 `child_id` 两个字段表示层级关系:
```sql
WITH RECURSIVE hierarchy AS (
SELECT id, parent_id, child_id, 1 as level
FROM tree
WHERE parent_id IS NULL -- 根节点
UNION ALL
SELECT t.id, t.parent_id, h.child_id, h.level + 1
FROM tree t
JOIN hierarchy h ON t.parent_id = h.child_id
)
SELECT h1.id, h1.parent_id, h1.child_id, h1.level
FROM hierarchy h1
ORDER BY h1.parent_id, h1.level;
```
这个查询首先找出所有的根节点(level=1),然后通过递归的方式将所有直接和间接的子节点添加到结果集中,每次增加一级 `level`。
阅读全文