1、近期要做个功能,给一个树表自动添加上parent_ids,ORACLE有专门的递归SQL,可以查询并拼装所有父级的ID,MYSQL不具备这个功能,经过多方查找资料并测试后,发现用函数挺好使,同时发现网上好多资料存在谬误,特把我测试无误的函数贴出来,供大家参考,同时如果有更好的方法,欢迎在评论区留言。
CREATE FUNCTION `FUNC_GET_PARENT_IDS`(
TID VARCHAR ( 4000 )) RETURNS varchar(4000) CHARSET utf8
BEGIN
DECLARE sTemp VARCHAR ( 4000 );
DECLARE sTempChd VARCHAR ( 4000 );
DECLARE sTempName VARCHAR ( 4000 );
SET sTemp = '';
SET sTempName = '';
SET sTempChd = TID;
SELECT dept_id INTO sTemp FROM sys_dept WHERE dept_id = sTempChd;
WHILE sTempChd != "0" DO
IF sTempName != "" THEN
SET sTemp = CONCAT( sTemp, ',', sTempName );
END IF;
SELECT a.parent_id, b.dept_id INTO sTempChd, sTempName
FROM sys_dept a
LEFT JOIN sys_dept b ON a.parent_id = b.dept_id
WHERE a.dept_id = sTempChd;
END WHILE;
RETURN sTemp;
END
说明一下,sys_dept 为你要递归的表,dept_id ,parent_id,分别为你的ID和父级的ID,根据实际情况替换即可