这样递归怎么写?以及对应的结构体怎么设计?

有张数据库如下:

id pid name
1 0 a
2 1 b
3 2 c
4 2 d
5 1 e
6 2 f
7 5 g
8 5 h
... ... ...

pid:代表父ID

把这个数据获取到,如何通过代码实现树状结果(json格式)返回给前端。

{
    "id": 1,
    "name": "a",
    "children": [
        {
            "id": 2,
            "name: "b",
            "children": [
                {
                    "id": 3,
                    "name": "c",
                    "children": [ ... ] // 有儿子就有该列表,没有就没有改字段
                },
                {...},
                {...},
            ]
        },
        {
            "id": 5,
            "name": "e",
            "children": [
                {
                    "id": 7,
                    "name": "g"
                },
                {
                    "id": 8,
                    "name": "h"
                }
            ]
        },
    ]
}

向下的儿子数不限制,最顶部只有一个节点。

阅读 1.4k
1 个回答

mysql从8.0才开始支持的CTE,很容易实现递归。如果你不是这个版本,那么基本靠SQL写不出来,改存储过程吧。

存储过程参考: https://blog.csdn.net/moyanxu...

CTE参考:

WITH RECURSIVE cte_count (n) 
AS (
      SELECT 1
      UNION ALL
      SELECT n + 1 
      FROM cte_count 
      WHERE n < 3
    )
SELECT n 
FROM cte_count;

see: https://www.yiibai.com/mysql/...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题