MySQL递归三层树结构 不使用 WITH RECURSIVE
时间: 2024-03-01 08:51:10 浏览: 105
如果你想在 MySQL 中递归处理三层树结构,而又不想使用 `WITH RECURSIVE` 语句,你可以使用以下方法:
假设你有一个 `tree` 表,包含 `id` 和 `parent_id` 字段,可以按以下步骤进行处理:
1. 首先,查询所有第一层节点:
```sql
SELECT *
FROM tree
WHERE parent_id IS NULL;
```
2. 对于第一层节点,查询它们的子节点:
```sql
SELECT *
FROM tree
WHERE parent_id IN (
SELECT id
FROM tree
WHERE parent_id IS NULL
);
```
3. 对于第二层节点,查询它们的子节点:
```sql
SELECT *
FROM tree
WHERE parent_id IN (
SELECT id
FROM tree
WHERE parent_id IN (
SELECT id
FROM tree
WHERE parent_id IS NULL
)
);
```
4. 对于第三层节点,查询它们的子节点:
```sql
SELECT *
FROM tree
WHERE parent_id IN (
SELECT id
FROM tree
WHERE parent_id IN (
SELECT id
FROM tree
WHERE parent_id IN (
SELECT id
FROM tree
WHERE parent_id IS NULL
)
)
);
```
依此类推,你可以一直查询下去,直到你达到你需要的层数为止。注意,这种方法效率较低,因为它需要多次查询数据库。如果你的数据量较大,你可能需要使用 `WITH RECURSIVE` 或其他更高效的递归方法。
阅读全文