MYSQL树表递归到父级

1、近期要做个功能,给一个树表自动添加上parent_ids,ORACLE有专门的递归SQL,可以查询并拼装所有父级的ID,MYSQL不具备这个功能,经过多方查找资料并测试后,发现用函数挺好使,同时发现网上好多资料存在谬误,特把我测试无误的函数贴出来,供大家参考,同时如果有更好的方法,欢迎在评论区留言。

CREATE   FUNCTION `FUNC_GET_PARENT_IDS`(
    TID VARCHAR ( 4000 )) RETURNS varchar(4000) CHARSET utf8
BEGIN
    DECLARE sTemp VARCHAR ( 4000 );
    DECLARE sTempChd VARCHAR ( 4000 );
    DECLARE sTempName VARCHAR ( 4000 );
    SET sTemp = '';
    SET sTempName = '';
    SET sTempChd = TID;
    SELECT dept_id INTO sTemp  FROM sys_dept  WHERE dept_id = sTempChd;
    WHILE sTempChd != "0" DO
        IF sTempName != "" THEN
          SET sTemp = CONCAT( sTemp, ',', sTempName );
        END IF;
        SELECT a.parent_id, b.dept_id INTO sTempChd, sTempName 
          FROM sys_dept a
            LEFT JOIN sys_dept b ON a.parent_id = b.dept_id 
         WHERE a.dept_id = sTempChd;
    END WHILE;
    RETURN sTemp;

END

说明一下,sys_dept 为你要递归的表,dept_id ,parent_id,分别为你的ID和父级的ID,根据实际情况替换即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值