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

将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 模电中二极管,三极管和电容的应用
  • ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
  • ¥15 气象网格数据与卫星轨道数据如何匹配
  • ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
  • ¥15 微软账户问题不小心注销了好像
  • ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
  • ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
  • ¥20 关于web前端如何播放二次加密m3u8视频的问题
  • ¥15 使用百度地图api 位置函数报错?
  • ¥15 metamask如何添加TRON自定义网络