mysql实现递归查询

mysql 递归树查询

表名: tree

表结构(主要字段): id, name, parent_id

新建一个mysql 函数
drop FUNCTION if EXISTS getTrees;
 
CREATE FUNCTION `getTrees`(rootId INT) 
    RETURNS varchar(1000) 
    BEGIN 
        DECLARE sTemp VARCHAR(1000); 
        DECLARE sTempChd VARCHAR(1000); 
 
        SET sTemp = '^'; 
        SET sTempChd =cast(rootId as CHAR); 
 
        WHILE sTempChd is not null DO 
            SET sTemp = concat(sTemp,',',sTempChd); 
            SELECT group_concat(id) INTO sTempChd FROM tree where FIND_IN_SET(parent_id,sTempChd)>0; 
        END WHILE; 
        RETURN sTemp; 
END  ;

里面字段可以替换成自己需要的, 如下是可以替换掉的

使用

select * from tree where FIND_IN_SET(id, getTrees(5));

注意

需要先在数据库创建函数, 才能使用, 由于mysql函数是持久化操作, 所以创建一次就可以了, 不需要每次创建, 如果在程序(java, go, python等)中使用, 只需要调用这个函数即可, 不需要再创建

posted @ 2020-09-16 12:01  ibry  阅读(2147)  评论(0)    收藏  举报