mysql5 具有父子关系的表,查询某一个子级的所有子子级数据记录。不用存储过程和with语句
时间: 2024-10-24 21:08:55 浏览: 12
MySQL根据某一个或者多个字段查找重复数据的sql语句
在MySQL 5中,如果你有一个表示父子关系的表格,通常这种结构会有两个字段,一个是父ID(例如`parent_id`),另一个是子ID(例如`child_id`)。你可以通过递归查询(Recursive Common Table Expression, 或者自连接)来获取某个特定子级的所有子子级数据记录。
假设你有一个名为`tree`的表,其结构如下:
```sql
CREATE TABLE tree (
id INT PRIMARY KEY,
parent_id INT,
child_id INT
);
```
你可以使用下面这个SQL查询来获取子级`A`的所有子子级记录,这里假设`A`的id是`1`:
```sql
WITH RECURSIVE descendants AS (
SELECT id, parent_id, child_id FROM tree WHERE child_id = 1
UNION ALL
SELECT t.id, t.parent_id, t.child_id
FROM tree AS t
JOIN descendants ON descendants.id = t.parent_id
)
SELECT * FROM descendants;
```
这个查询首先选择父ID为`1`的数据(即`A`本身),然后递归地加入所有父ID等于当前子级ID的记录,直到没有更多的父级为止。
阅读全文