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'))

查出来的结果是:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值