mysql向上遞歸&向下遞歸


工作記錄

向上遞歸函數test:

BEGIN 
 DECLARE sTemp VARCHAR(1000); 
 DECLARE sTempChd VARCHAR(1000); 

 SET sTemp = '$'; 
 SET sTempChd =cast(rid as CHAR); 

 WHILE sTempChd is not null DO 
   SET sTemp = concat(sTemp,',',sTempChd); 
   SELECT group_concat(scomp_father) INTO sTempChd FROM subcompany where FIND_IN_SET(scomp_code,sTempChd)>0; 
 END WHILE; 
 RETURN sTemp; 
 END

參數:rid VARCHAR(50)

返回類型:varchar(1000)

 

調用:

SELECT * from subcompany where FIND_IN_SET(scomp_code,test('G3000001'));

 

簡單說明一下:

scomp_father 是父節點

scomp_code 是當前節點

向上遞歸傳入的參數是最下級的節點,而向下遞歸傳入的是最上級的節點(並且上面函數中scomp_father 和scomp_code 的位置要互換)

注意:這樣的循環是有風險的,可自行添加適合的條件跳出循環防止鎖死

 

轉載請注明博客出處:http://www.cnblogs.com/cjh-notes/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM