获取当前部门下的所有子部门

获取所有子部门

一、sqlite 写法

    <!--获取部门信息-->
    <select id="selectOrgList" parameterType="java.lang.String" resultMap="BaseResultMap">
        WITH RECURSIVE
          cte(ORG_CODE,ORG_NAME,ORG_PARENT_CODE) AS(
            SELECT ORG_CODE,ORG_NAME,ORG_PARENT_CODE FROM organization WHERE ORG_CODE=#{orgCode}
            UNION ALL
            SELECT a.ORG_CODE,a.ORG_NAME,a.ORG_PARENT_CODE FROM organization AS a INNER JOIN
                cte ON a.ORG_PARENT_CODE=cte.ORG_CODE
        )
        SELECT * FROM cte;
    </select>

二、mysql写法

SELECT * FROM (SELECT ID, DEPARTMENT_PARENT_CODE, DEPARTMENT_CODE, DEPARTMENT_NAME FROM organization WHERE DEPARTMENT_PARENT_CODE IS NOT NULL ORDER BY ID) rd,( SELECT @pid := '32rererererrererer' ) as pd
WHERE
	FIND_IN_SET( DEPARTMENT_PARENT_CODE, @pid ) 
	AND @pid := concat(@pid, ',', DEPARTMENT_CODE )
UNION
SELECT ID,DEPARTMENT_PARENT_CODE,DEPARTMENT_CODE,DEPARTMENT_NAME,( SELECT @pid := '32rererererrererer' ) AS pd FROM organization WHERE DEPARTMENT_CODE='32rererererrererer';

//使用递归sql的时候务必要用ORDER BY 进行排序否则会丢失子节点

备注:数据库相关字段查看https://blog.csdn.net/qq_39381529/article/details/105846136

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值