mysql:动态查询一个树形结构表中:某一个节点的所有父节点或者子节点
根据传过来的表名和关系字段名可以动态找到某个某一个节点的所有父节点或者子节点
- schema_name
- table_name
- type :1、父级2、子级
- self_value: 节点值
- id_name:节点主键id,用于查找子节点
- self_name:本节点的字段名称,用于找父级
- parent_name:父节点名称,用于找子级和父级
- rt_value:返回值,MEDIUMTEXT,最大16777215(2^24-1)
辅助方法
CREATE FUNCTION `func_get_split_string`(`f_string` varchar(1000), `f_delimiter` varchar(5), `f_order` int)
RETURNS varchar(255) CHARSET utf8
LANGUAGE SQL
NOT DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT ''
BEGIN
#592876
#f_string字符串按f_delimiter截取后获取第f_order位
declare result varchar(255) default '';
declare oneSub varchar(255) default '';
declare cou int default 0;
set cou=1+(length(f_string) - length(replace(f_string,f_delimiter,'')));
if f_order>cou then
return result;
end if;
set result = reverse(substring_index(reverse(substring_index(f_string,f_delimiter,f_order)),f_delimiter,1));
return result;
END
子存储过程
CREATE PROCEDURE `pro_find_tree_recursion`(IN `table_name` VARCHAR(50), IN `parent_name` VARCHAR(50), IN `id_name` VARCHAR(50), IN `self_value` VARCHAR(50), INOUT `rt_value` MEDIUMTEXT)
LANGUAGE SQL
NOT DETERMINISTIC
CON