mysql 使用存储过程 实现树节点的获取

如图:

mysql 使用存储过程 实现树节点的获取_第1张图片

表数据

mysql 使用存储过程 实现树节点的获取_第2张图片

这样的一棵树,如何获取“高寅瑞”下的所有节点(一条sql语句是肯定搞不定的)

通过存储过程来写

DELIMITER //
CREATE FUNCTION `getChildLst`(rootId INT)

RETURNS varchar(1000) READS SQL DATA

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 document_file_name where FIND_IN_SET(pId,sTempChd)>0;

  END WHILE;

  RETURN sTemp;

END  //

创建如上存储过程

select * from document_file_name where find_in_set(id, getChildLst(1));

mysql 使用存储过程 实现树节点的获取_第3张图片

你可能感兴趣的:(mysql,mysql获取树的所有节点)