西门望风 2014-11-27 11:06 采纳率: 0%
浏览 901

mysql数据库创建sql函数,查询上级

****创建sql函数,递归查询出上级所有目录,parent_code字段为对应上级编号(org_level),org_level为本机的级别编号****

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-03 03:19
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在MySQL中,你可以使用SQL的FUNCTIONRECURSIVE来实现这个功能。以下是一个简单的示例:

    DELIMITER //
    CREATE FUNCTION get_parent_codes(parent_code INT) RETURNS SETOF CHAR(50)
    BEGIN
      DECLARE code CHAR(50);
      SELECT parent_code INTO code FROM orgs WHERE parent_code = parent_code;
      IF NOT FOUND THEN
        RETURN;
      END IF;
    
      INSERT INTO result (code, org_level) VALUES(code, 1);
    
      RECURSE INTO code
      LEFT JOIN orgs ON orgs.parent_code = code
      WHERE orgs.parent_code != parent_code;
    
      RETURN;
    END //
    DELIMITER ;
    

    在这个例子中,我们首先定义了一个名为get_parent_codes的函数,它接受一个参数parent_code。然后,我们在函数体内执行了一些逻辑,包括检查父级ID是否存在,如果存在就插入结果集,并对父级进行递归查找。

    注意:这个函数是递归的,所以你需要在调用它时提供一个完整的父级ID列表,以避免无限循环。

    评论

报告相同问题?