MySql 获取当前节点及递归所有上级节点

Posted F2BPM流程引擎

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySql 获取当前节点及递归所有上级节点相关的知识,希望对你有一定的参考价值。

 

-- mysql 获取当前节点及递归所有上级节点 
-- 参数说明:resultField:查询返回字段,idd 要查询的资源ID值,idFieldName ID字段名,parentIdFieldName 上级ID字段名,tableName 表名,isContainMySelf 是否包含自己
DROP procedure IF EXISTS pro_getParentList;
create procedure pro_getParentList(in resultField varchar(4000),in myid varchar(100),in idFieldName varchar(100),in parentIdFieldName varchar(100),in tableName varchar(100),isContainMySelf int)
begin
	drop table if exists tmpParent;
	CREATE    TABLE tmpParent(temId varchar(100)) ;
	set @tempParentId=myid;
  set @myDoflag=1;
WHILE @myDoflag>0  do 
    set @ssss = CONCAT(‘ select ‘, parentIdFieldName, ‘, count(*) INTO  @tempParentId,@myDoflag from ‘,tableName ,‘ where ‘,idFieldName,‘=‘,‘‘‘‘,@tempParentId,‘‘‘‘);
		prepare strsql from @ssss;
		execute strsql;
    deallocate prepare strsql;     
    if(@myDoflag>0) THEN
	  set @insertSql = CONCAT(‘INSERT into tmpParent(temId) values (‘,"‘",@tempParentId,"‘",‘)‘);
	  prepare preSql1 from @insertSql;
	  execute preSql1;
    deallocate prepare preSql1; 
    end if;
end WHILE;
		 
		 IF (isContainMySelf=1) THEN
			INSERT into tmpParent(temId) values (myid); 
		 END IF; 

			SET @fieldSql=concat(‘ SELECT ‘,resultField);
			set @strsql = CONCAT(@fieldSql,‘ from ‘, tableName,‘ s ‘,‘ inner join  tmpParent t on t.temId=s.‘,idFieldName,‘  order by s.‘,idFieldName,‘  asc‘);
			prepare preSql from @strsql;
			execute preSql;
 
end

  

以上是关于MySql 获取当前节点及递归所有上级节点的主要内容,如果未能解决你的问题,请参考以下文章

200分求助!SQL递归查询所有子节点

mysql如何无限极查找最顶层id节点

步步为营-82-获取当前部门的所有上级节点-存储过程实现

MYSQL 查询树形结构数据,查询某个节点下的所有子节点数据。

mysql如何根据很多子节点查询出父节点,只要一条路径上的

JS根据子节点递归获取所有父节点的集合