递归找父级或子级

这篇博客探讨了如何使用递归方法查询部门信息。通过SQL查询,既可以向上递归获取包含自身的父级ID及其详细信息,也可以向下递归获取子级ID。在Java中,递归实现寻找父级部门,当部门级别大于3时,查找其父级,如果找到类型为PFC且级别为3的部门,将设置区域名称和代码,并模糊搜索省名。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

sql向上递归 (查找包含自己的父级id等信息)

SELECT T2.id,T2.dep_name,T2.dep_level,T2.dep_type

FROM (

SELECT

@r AS _id,

(

SELECT @r := parent_id

FROM dep_info

WHERE id = _id) AS parent_id,

@l := @l + 1 AS lvl

FROM (

SELECT @r := #{id,jdbcType = INTEGER}, @l := 0) vars,

dep_info h

WHERE @r != 0 AND parent_id > 0

) T1

JOIN dep_info T2 ON T1._id = T2.id

ORDER BY T1.lvl DESC

 

sql向下递归  (查找包含自己的子级id)

SELECT id

FROM (

SELECT t1.id, IF(FIND_IN_SET(parent_id, @pids) > 0, @pids := CONCAT(@pids, ',', id), 0) AS ischild

FROM (

SELECT id,parent_id

FROM dep_info

WHERE 1=1 AND state = 'NORMAL'

ORDER BY parent_id, id

) t1,

(

SELECT @pids := #{deptId,jdbcType=INTEGER}) t2

) t3

WHERE ischild != '0' order by id

 

 

java递归找父级

DepInfoBean depInfoBean = depInfoBeanDao.selectByPrimaryKey(depId);

while (depInfoBean.getDepLevel() > 3) {
    DepInfoBean parentDepInfoBean = depInfoBeanDao.selectByPrimaryKey(depInfoBean.getParentId());
    if (parentDepInfoBean.getDepType().equals(DepTypeEnum.PFC.getCode()) && parentDepInfoBean.getDepLevel().equals(3)) {
        resultDto.setZoneName(parentDepInfoBean.getDepName());
        resultDto.setZoneCode(parentDepInfoBean.getDepCode());

        //根据部门名 模糊搜索省
        String depProvince = this.basicAreaDAO.executeSelectOneMethod(depInfoBean.getDepName(), "selectProvinceNameByCon", String.class);
        resultDto.setProvinceName(depProvince);
        return resultDto;
    } else {
        depInfoBean = parentDepInfoBean;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值