MySql数据库通过父级ID获取所有子级ID(无穷级)
1、我使用的数据库客户端为:Navicate
点击工具栏的【工具】-> 【命令行界面】,执行如下命令:
set global log_bin_trust_function_creators=TRUE;
注意:执行该命令需要有数据库的某些权限,必要时候可以让运维管理员进行操作。

2、创建函数:
CREATE FUNCTION `getChildList`(`rootId` VARCHAR(32)) RETURNS varchar(4000) CHARSET utf8
BEGIN
DECLARE sTemp VARCHAR(4000);
DECLARE sTempChd VARCHAR(4000);
SET sTemp = '';
SET sTempChd =cast(rootId as CHAR);
WHILE sTempChd is not null DO
SET sTemp = concat(sTemp,',',sTempChd);
SELECT group_concat(SUB_ID) INTO sTempChd FROM ZITO_ERP_PRO_SUB where FIND_IN_SET(SUB_PARENT_ID,sTempChd)>0;
END WHILE;
RETURN sTemp;
END
3、函数创建成功,可以进行测试。
点击【运行函数】,需要输入参数,参数输入时一定要用单引号修饰。如图:

4、myBatis执行查询操作:
select GROUP_CONCAT(SUB_ID) from ZITO_ERP_PRO_SUB
where FIND_IN_SET(SUB_ID, getChildList(#{0}))
注意:${0} 为传过来的父ID参数。