mysql 2张表把查询出来的数据形成树结构
时间: 2024-02-01 10:14:16 浏览: 94
Mysql数据结构.pdf
首先,你需要明确你的两张表的结构和关系。假设表1为`category`,表2为`product`,并且它们的关系是一对多的,即一个分类下面可以有多个产品。
表结构示意图如下:
```
category表:
+----+--------+-----------+
| id | name | parent_id |
+----+--------+-----------+
| 1 | 电子 | NULL |
| 2 | 手机 | 1 |
| 3 | 笔记本 | 1 |
| 4 | 小米 | 2 |
| 5 | 华为 | 2 |
| 6 | 苹果 | 2 |
+----+--------+-----------+
product表:
+----+------------+-----------+
| id | name | category_id|
+----+------------+-----------+
| 1 | 小米手机 | 4 |
| 2 | 华为手机 | 5 |
| 3 | 苹果手机 | 6 |
| 4 | 小米笔记本| 3 |
+----+------------+-----------+
```
接下来,你可以使用递归查询来获取树形结构的数据。下面是一个示例SQL,它可以返回以`电子`为根节点的树形结构:
```
WITH RECURSIVE cte AS (
SELECT id, name, parent_id, 0 AS level
FROM category
WHERE parent_id IS NULL
UNION ALL
SELECT c.id, c.name, c.parent_id, level + 1
FROM category c
JOIN cte ON cte.id = c.parent_id
)
SELECT CONCAT(REPEAT(' ', level), name) AS name
FROM cte
ORDER BY id;
```
这个SQL的执行结果如下:
```
+----------+
| name |
+----------+
| 电子 |
| 手机 |
| 小米 |
| 华为 |
| 苹果 |
| 笔记本 |
| 小米 |
+----------+
```
你可以根据自己的需要进行调整和优化。同时,你也可以使用不同的编程语言来解析这个结果集并构建树形结构。
阅读全文