栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mysql带层级(父子级)的递归查询

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mysql带层级(父子级)的递归查询

相关博客:
https://blog.csdn.net/qq_16992475/article/details/121180200 mysql 分组查询排序实现
https://blog.csdn.net/qq_16992475/article/details/118344611 树形结构数据封装的几种方法
https://blog.csdn.net/qq_16992475/article/details/121783805 Mysql递归查询子级&添加序号&从子类ID查询所有父类

需求

组织之间存在层级关系,人员可对应多个组织,对应的多个组织也可以存在上下级关系。
查询某个人的组织的时候,需要把这个人对应的所有组织,和对应的每一个组织的所有上级都按序查询出来,并且根据组织id查询时,需要把该组织及该组织的所有子级组织的人员都查询出来。

PersonListDto
public class PersonListDTO {

    private Long id;

   
    private String personCode;

 
    private String name;


    private String position;

    private List organizationReleaseDTOList;

    private Date createTime;
}

OrganizationReleaseDTO
public class OrganizationReleaseDTO {
    private Long id;

    private List organizationNameList;
}
PersonMapper.xml




    
        
        
        
        
        
        
        
    
    
        
        
        
    

    
        SELECT
            T2.organization_name
        FROM
            (SELECt @r := #{id}, @l := 0) vars,
            (
                SELECT
                    @r AS _id,
                    (SELECT @r := parent_id FROM organization WHERe id = _id) AS parent_id,
                    @l := @l + 1 AS lvl
                FROM
                    organization h
                WHERe @r != 0
             ) T1
        JOIN organization T2 ON T1._id = T2.id
        ORDER BY T1.lvl DESC
    
    
    SELECT
        orr.region_id
    FROM
        organization_region orr
            INNER JOIN (
            SELECt
                mr.id
            FROM
                (SELECt @ids := 0) b,
                (
                    SELECT
                        @ids AS _ids,
            (SELECT @ids := GROUP_CONCAt(id) FROM merchant_region WHERe FIND_IN_SET(parent_id, @ids)) AS cids
                    FROM merchant_region
                    WHERe
                        @ids IS NOT NULL) c1,
                merchant_region mr
                LEFT JOIN merchant_user_region mur ON mr.id = mur.merchant_region_id
            where
                FIND_IN_SET(mr.id, c1._ids)
              AND mr.is_del = 0
              AND mur.merchant_sub_user_id = #{merchantSubUserId}
            ORDER BY mr.create_time DESC) mr ON mr.id = orr.region_id
    WHERe
        orr.organization_id = #{id}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/703713.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号