mysql查出树结构的所有子节点
tree结构表
CREATE TABLE `model_struc` ( `ID` varchar(36) NOT NULL COMMENT ID, `name` varchar(50) DEFAULT NULL COMMENT 名称, `morder` varchar(255) DEFAULT NULL COMMENT 排序, `pid` varchar(36) DEFAULT NULL COMMENT 父菜单ID, `iconid` varchar(32) DEFAULT NULL COMMENT 图标ID, `create_by` varchar(32) DEFAULT NULL COMMENT 创建人id, `create_name` varchar(32) DEFAULT NULL COMMENT 创建人, `update_by` varchar(32) DEFAULT NULL COMMENT 修改人id, `update_date` datetime DEFAULT NULL COMMENT 修改时间, `create_date` datetime DEFAULT NULL COMMENT 创建时间, `update_name` varchar(32) DEFAULT NULL COMMENT 修改人, `icode` varchar(32) DEFAULT NULL COMMENT 模型代码, `version` varchar(32) DEFAULT NULL COMMENT 版本, PRIMARY KEY (`ID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=模型结构;
查询函数: 这个函数只需要改一下表明,还有pid的名字成你的即可复用
CREATE DEFINER=`fkgl`@`%` FUNCTION `getChildLst`(rootId varchar(36)) RETURNS varchar(1000) CHARSET utf8 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 model_struc WHERE FIND_IN_SET(pid, sTempChd) > 0; END WHILE; RETURN sTemp; END
我的树,POS模型是根节点,他的id是1dffsdad
使用方法: getChildLst(‘你的id’)里传入的是根节点id,也可以是父节点id,如果是根节点就查出根下面所有的子节点,父节点的id就查出该父节点下面的所有子节点
select * from model_struc where FIND_IN_SET(id, getChildLst(1dffsdad))
查出来的结果是:
