我是个老六 2022-08-25 08:59 采纳率: 61.1%
浏览 79
已结题

将oracle的递归转换成mysql递归

运行结果及报错内容

这是oracle的递归函数,从子部门递归父级部门

CREATE OR REPLACE FUNCTION FUN_GET_ORG_ID (child_dept_id IN NUMBER
return NUMBER
is
retCode number:=-1;
BEGIN
  SELECT
    distinct dept_Id INTO retCode
  FROM
    t_Department_Info
  WHERE
    par_dept_id is null
    start with dept_Id = child_dept_id
    connect by prior par_dept_id = dept_Id;
RETURN (retCode) ;
END ;

我的解答思路和尝试过的方法

我查了一下mysql递归,完全看不懂,链接如下
https://blog.csdn.net/wocaizhale/article/details/121600221

我想要达到的结果

请问有会sql的帮我改一下他这段吗

img

  • 写回答

2条回答 默认 最新

  • 一把编程的菜刀 2022-08-25 09:19
    关注

    你看的这个是查询所有下级的递归,看点有点懵正常的,查询父级的是这样的:

    DELIMITER 
    CREATE FUNCTION `getParentList`(root_id BIGINT) 
          RETURNS VARCHAR(1000) 
          BEGIN 
               DECLARE k INT DEFAULT 0;
             DECLARE fid INT DEFAULT 1;
             DECLARE str VARCHAR(1000) DEFAULT '$';
             WHILE rootId > 0 DO //大于0时一直执行循环
                  SET fid=(SELECT pid FROM table_name WHERE root_id=id); //查询当前root_id的父级ID
                   IF fid > 0 THEN //父级id大于0时,把父级合并到变量str 中,用逗号隔开
                      SET str = concat(str,',',fid);   
                       SET root_id = fid;  
                   ELSE 
                         SET root_id=fid;
                   END IF;  
          END WHILE;
        RETURN str;
      END  //
    delimiter ;
    
    测试语句:
    SELECT getParentList(10);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月2日
  • 已采纳回答 8月25日
  • 创建了问题 8月25日

悬赏问题

  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加
  • ¥15 用ns3仿真出5G核心网网元
  • ¥15 matlab答疑 关于海上风电的爬坡事件检测
  • ¥88 python部署量化回测异常问题
  • ¥30 酬劳2w元求合作写文章
  • ¥15 在现有系统基础上增加功能
  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码