一、选择函数,新建函数
二、定义函数文件名称,选择函数,选择完成
三、查看函数内容
四、把代码替换到上图,然后保存
CREATE DEFINER=`admin`@`%` FUNCTION `get_value_of`(in_id varchar(32)) RETURNS varchar(1000) CHARSET utf8
begin
declare ids varchar(1000) default '';
declare tempids varchar(1000);
set tempids = in_id;
while tempids is not null do
set ids = CONCAT_WS(',',ids,tempids);
select GROUP_CONCAT(id) into tempids from '需要递归的表名称' where FIND_IN_SET(parent_id,tempids)>0;
end while;
return ids;
end
- ids:拼接最终返回数据(本身 + 子级)
- '需要递归的表名称' :表名称
- parent_id:父级ID
- id:需要递归的ID
- get_value_of:函数名称
- tempids:tempids = in_id,in_id = 传入的值
五、通过函数递归查询子级
select * from '需要递归的表名称' where FIND_IN_SET(id,get_value_of('放入要递归的id'))
六、示例
1、函数示例
2、sql查询示例
- 通过id 为 c60 的当前一级分类 '资负类',递归查询所有子级
- 查询到了二级分类:'AUM' 、'其他'、'信用卡'、'存款'、'贷款'
- 查询到了 '存款' 下的三级分类:'三级目录'
- 查询到了 '三级目录' 下的四级分类:'四级'