mysql查询父级下所有子集
时间: 2023-11-02 22:00:42 浏览: 57
在 MySQL 中,要查询一个父级下所有子集,可以使用递归查询或者使用 JOIN 连接查询。下面分别介绍这两种方法。
1. 递归查询
使用递归查询可以非常方便地查询一个父级下所有子集,但是需要注意循环引用的问题。
假设我们有一个表格,其中包含以下字段:
- id:主键 ID
- name:名称
- parent_id:父级 ID
现在我们要查询 ID 为 1 的节点下所有子节点,可以使用以下 SQL 语句:
```
WITH RECURSIVE cte AS (
SELECT id, name, parent_id
FROM table_name
WHERE id = 1
UNION ALL
SELECT t.id, t.name, t.parent_id
FROM table_name t
JOIN cte c ON t.parent_id = c.id
)
SELECT * FROM cte;
```
2. JOIN 连接查询
使用 JOIN 连接查询也可以查询一个父级下所有子集,但是需要使用多个表格进行连接,查询起来比较麻烦。
假设我们有一个表格,其中包含以下字段:
- id:主键 ID
- name:名称
- parent_id:父级 ID
我们可以使用以下 SQL 语句查询 ID 为 1 的节点下所有子节点:
```
SELECT t1.*
FROM table_name t1
JOIN table_name t2 ON t1.parent_id = t2.id
WHERE t2.id = 1;
```
以上就是 MySQL 查询父级下所有子集的两种方法。需要根据具体的情况选择合适的方法。