mysql一张表里使用parent_id作为上下级关系,怎么查询一个id下的所有子id
时间: 2024-05-03 10:19:43 浏览: 326
MySQL通过自定义函数实现递归查询父级ID或者子级ID
5星 · 资源好评率100%
使用MySQL的递归查询语句可以查询一个id下的所有子id。具体操作如下:
1. 创建一张名为`tree`的表,包含`id`和`parent_id`两个字段,用于存储上下级关系。
2. 插入数据。例如,插入一些上下级关系:
```
INSERT INTO tree (id, parent_id) VALUES
(1, 0),
(2, 1),
(3, 1),
(4, 2),
(5, 2),
(6, 3),
(7, 3),
(8, 6),
(9, 6),
(10, 7);
```
3. 使用递归查询语句查询一个id下的所有子id。例如,查询id为2的所有子id:
```
WITH RECURSIVE cte AS (
SELECT id FROM tree WHERE id = 2
UNION ALL
SELECT t.id FROM tree t
JOIN cte ON t.parent_id = cte.id
)
SELECT * FROM cte;
```
这里使用了递归公共表表达式(CTE),查询语句分为两部分:
- 第一部分:查询指定id的记录。
- 第二部分:递归查询与指定id相关联的所有记录,直到没有更多的记录与之相关联。
最终,查询结果为:
```
+----+
| id |
+----+
| 2 |
| 4 |
| 5 |
+----+
```
可以看到,id为2的记录下面有两个子记录4和5。
阅读全文