mysql树形结构递归查询

oracle支持树形递归查询start with ... connect by ,但mysql不支持,不过可以通过创建函数来实现递归查询。

创建函数

DELIMITER //
DROP FUNCTION IF EXISTS f_get_suborg;
CREATE FUNCTION f_get_suborg(parentId VARCHAR(5000))
RETURNS VARCHAR(5000)
BEGIN
    DECLARE oTemp VARCHAR(5000);
    DECLARE oTempChild VARCHAR(5000);
    SET oTemp = '';
    SET oTempChild =parentId;
    WHILE oTempChild is not null DO
        IF oTemp != '' THEN
            SET oTemp = concat(oTemp,',',oTempChild);
        ELSE
            SET oTemp = oTempChild;
        END IF;
        SELECT group_concat(org_ID) INTO oTempChild FROM dbname.base_organizational where parentId<>org_ID and FIND_IN_SET(parent_id,oTempChild)>0;
    END WHILE;
RETURN oTemp;
END//
DELIMITER ;

--备注:表名和字段名记得替换

赋权:

GRANT EXECUTE ON FUNCTION `dbname`.f_get_suborg TO 'user_name'@'%';

执行:

SELECT * FROM dbname.base_organizational WHERE FIND_IN_SET(parent_id,dbname.f_get_suborg('1'));

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值