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等)中使用, 只需要调用这个函数即可, 不需要再创建

浙公网安备 33010602011771号