首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Python或MySQL中找到关系链?

如何在Python或MySQL中找到关系链?
EN

Stack Overflow用户
提问于 2019-12-05 02:53:19
回答 1查看 115关注 0票数 0

有create:

代码语言:javascript
运行
复制
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for test
-- ----------------------------
DROP TABLE IF EXISTS `test`;
CREATE TABLE `test` (
  `id` int(11) DEFAULT NULL,
  `pid` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

-- ----------------------------
-- Records of test
-- ----------------------------
BEGIN;
INSERT INTO `test` VALUES (1, 2);
INSERT INTO `test` VALUES (2, 6);
INSERT INTO `test` VALUES (2, 3);
INSERT INTO `test` VALUES (3, 4);
INSERT INTO `test` VALUES (4, 5);
INSERT INTO `test` VALUES (5, 2);
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

表看起来如下:

id再分配pid

1.再评核2

2.再接电话6

2.再培训局3

3.再培训局4

4.再补贴5

5.一般用途2

我想输出:

  • 1-2-6
  • 1-2-3-4-5

不要循环

我应该怎么做,使用Python还是MySQL?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-06 02:30:05

我找到了一个方法

代码语言:javascript
运行
复制
with recursive cte (id, pid ,path) as (

  select     id,
             pid,
                         CAST(1 as char(255)  )  as path

  from       test
  where      id = 1
  union 
  select     p.id,
             p.pid,
                    CONCAT(cte.path,',',p.id)  AS path

  from       test p

  inner join cte
          on (p.id = cte.pid and cte.pid <> 1 and FIND_IN_SET(cte.pid,cte.path)<1 )

)

select  id,pid ,CONCAT(path,',',pid) FROM cte;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59187510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档