实现效果 例如: 中国 下的 省 市 县 乡 输入 省的id 能把该省下的市,县,乡全部查出来,输入该市的id 可以把 该市下的 县,乡全部查出来 oracle 级联查询:oracle有内置函数 start with …connect by prior 直接实现级联效果如 select a.* from T_depart a start with depid=’213520′ connect by prior depid=pdepid depid是指 部门编号, pdepid是指上级部门编号 depid=’213520′ 是指查递归depid=213520的部门即查出 depid是213520 的子节点,孙节点,重孙节点,…… 不过在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’ 及其子孙节点的详细信息。
mysql级联查询
猜你喜欢
转载自mengjichen.iteye.com/blog/2401475
今日推荐
周排行