不过在mysql 中就有点麻烦了,得创建方法,并调用: mysql中:创建function: DELIMITER $$ USE `device`$$ DROP FUNCTION IF EXISTS `getChildList`$$ CREATE DEFINER=`root`@`localhost` FUNCTION `getChildList`(rootId VARCHAR(100)) RETURNS VARCHAR(1000) CHARSET utf8 BEGIN DECLARE pTemp VARCHAR(1000); DECLARE cTemp VARCHAR(1000); SET pTemp = ‘$’; SET cTemp = rootId;
WHILE cTemp IS NOT NULL DO SET pTemp = CONCAT(pTemp,’,’,cTemp); SELECT GROUP_CONCAT(depid) INTO cTemp FROM T_depart WHERE FIND_IN_SET(pdepid,cTemp)>0; END WHILE; RETURN pTemp; END$$ DELIMITER ;
通过 select getChildList(‘213520‘) from dual 可以验证查出 id是213520及它以下节点的id 例如 我的结果是 $,213520,21352012,21352013 通过 select * from ‘T_depart’ where find_in_set (depid,getChildList(‘213520‘)); 就会查出 T_depart这个表中, id = ‘213520’ 及其子孙节点的详细信息。