表字段:

CATG_ID, PAR_ID, CATG_NM,CATG_CD

CATG_ID

PAR_ID CATG_NM CATG_CD
1000 电视/影音 TV/VIO
1010 1000 电视 TV
1011 1010 4K超高清电视 4K-TV

如何实现查询1011的id,cd和nm是包含父类的平级结构呢?

例如:{"ids":"1011,1010,1000","cds":"TV/VIO,TV,4K-TV","nms":"电视/影音,电视,4K超高清电视"}

查询某一分类的父层级信息,SQL如下:

SELECT
    @Pn := CATG_ID,
    CATG_CD,
    @pathId :=(
    SELECT
        GROUP_CONCAT(
            SUBSTRING_INDEX(
                @Pn := (
                SELECT
                    CONCAT( PAR_ID, '|', CATG_ID ) 
                FROM
                    tbl_pms_category 
                WHERE
                CATG_ID = SUBSTRING_INDEX( @Pn, '|', 1 )),
                '|',
                - 1 
            ) 
        ORDER BY
            CATG_ID DESC SEPARATOR ',' 
        ) 
    FROM
        tbl_pms_category 
    WHERE
        @Pn IS NOT NULL 
    ORDER BY
        CATG_ID ASC 
    ) AS PATH_IDS,
    @Pn1 := CATG_ID,
    @pathId :=(
    SELECT
        GROUP_CONCAT(
            SUBSTRING_INDEX(
                @Pn1 := (
                SELECT
                    CONCAT( PAR_ID, '|', CATG_CD ) 
                FROM
                    tbl_pms_category 
                WHERE
                CATG_ID = SUBSTRING_INDEX( @Pn1, '|', 1 )),
                '|',
                - 1 
            ) 
        ORDER BY
            CATG_ID DESC SEPARATOR ',' 
        ) 
    FROM
        tbl_pms_category 
    WHERE
        @Pn1 IS NOT NULL 
    ORDER BY
        CATG_ID ASC 
    ) AS PATH_CDS,
    @Pn2 := CATG_ID,
    @pathId :=(
    SELECT
        GROUP_CONCAT(
            SUBSTRING_INDEX(
                @Pn2 := (
                SELECT
                    CONCAT( PAR_ID, '|', CATG_NM ) 
                FROM
                    tbl_pms_category 
                WHERE
                CATG_ID = SUBSTRING_INDEX( @Pn2, '|', 1 )),
                '|',
                - 1 
            ) 
        ORDER BY
            CATG_ID DESC SEPARATOR ',' 
        ) 
    FROM
        tbl_pms_category 
    WHERE
        @Pn2 IS NOT NULL 
    ORDER BY
        CATG_ID ASC 
    ) AS PATH_NMS  
FROM
    tbl_pms_category;

过滤条件可根据实际需要自行添加;另外,SEPARATOR 后使用的分割符也可自行修改为“/”或其他。

查询递归表SQL,分类表查询,递归表数据结构转平级查询优化SQL相关推荐

  1. 事实表的分类:事务事实表,周期快照事实表,累计快照事实表

    维度建模数仓领域中的事实表大致分以下三种:事务事实表,周期快照事实表,累计事实表. 事务事实表与周期快照事实表.累积快照事实表虽然使用相同的一致性维度,但是它们在内容构成以及业务描述上还是有很大的区别 ...

  2. sql查询语句_多字段分类汇总_多表合并

    一.最初(最简单的入门实例,单个分类汇总) 1,查询语句/*药品费用分科室汇总*/ select c.sksxx02,sum(nvl(b.nfyxx06,0))         from yygli6 ...

  3. MySQL数据库性能优化由浅入深(表设计、慢查询、SQL索引优化、Explain分析、Show Profile分析、配置优化)

    文章目录 0 SQL性能分析 1 表的设计合理化 1.1 为什么需要范式 1.2 三范式原理 1.3 什么样的表才满足三范式 2 慢查询 2.1 慢查询介绍 2.2 慢查询步骤 3 添加适当索引 3. ...

  4. mybatis框架实现一对多、多对多关系查询,以及递归查询(单表多级分类:省市区三级地址查询)

    mybatis框架练习 mybatis框架中,包括实体类(这些实体类与数据库中的字段属性相对应),mybatis的配置文件(即mybatis-config.xml,这个配置文件用于连接实体类和orm( ...

  5. SQL图文讲解操作12-多表查询

    |版权声明:本文为博主原创文章,未经博主允许不得转载.转载请附上原链接,博客地址:https://blog.csdn.net/sgsgy5 ## 1.1 目标 理解多表查询 理解子查询 能够创建视图 ...

  6. SQL语句汇总(终篇)—— 表联接与联接查询

    上一篇博文说到相关子查询效率低下,那我们怎么能将不同表的信息一起查询出来呢?这就需要用到表联接. 和之前的UNION组合查询不同,UNION是将不同的表组合起来,也就是纵向联接,说白了就是竖着拼起来. ...

  7. OceanBase SQL 执行计划解读(二)──── 表连接和子查询

    前文<OceanBase SQL 执行计划解读(一)>介绍了单表查询中基本的执行计划解读,本文主要介绍简单的表连接和子查询相关的执行计划. 本文假设你对常用的表连接算法已有了解,包括:嵌套 ...

  8. SQL学习(3)——表的复杂查询与函数操作

    SQL学习(3)--表的复杂查询 1.视图 1.1.创建视图 1.1.1.基于单表的视图 1.1.2.基于多表的视图 1.2.查询视图 1.3.修改视图 1.4.更新视图 1.5.删除视图 2.子查询 ...

  9. 多表查询的分类及其查询语法

    多表查询分类:     连接查询:         内连接:相当于查询A,B交集部分数据             内连接查询语法:                 隐式内连接              ...

最新文章

  1. Robert算子的运用
  2. 同步异步网络搜集到的比喻
  3. 华为鸿蒙系统不卡,华为鸿蒙系统,到底能不能取代安卓?网友:细节决定成败...
  4. 文件件服务器,文件件服务器
  5. oracle rman备份 归档模式,Oracle RMAN备份归档与非归档模式
  6. XGBoost算法解析(非常详细)
  7. 高德地图 聚合效果
  8. 多线程程序的填坑笔记和多线程编程应该遵循的规则
  9. 工具类记录之Guawa的Splitter
  10. 思科VPLS解决方案
  11. 蓝牙基础知识进阶——Link Manager通用规则介绍
  12. 盘点OLED显示技术的几大优势
  13. 运动相机竞争升级:下一站模块化、自动化?
  14. 服务器参数知多少 带你一一认识这些参数
  15. 基于Java web的购物商城
  16. Python语法分析
  17. vue项目点击后,从左边或右边滑出组件,再次点击原路滑回。<transition>、transform
  18. 【计算机网络】一、概论
  19. Arduino Nano做NB-IoT透传项目
  20. 口令是计算机软件吗,Foxmail中的POP3口令是什么?

热门文章

  1. 这一次,让你把深拷贝和浅拷贝刻进骨子里
  2. 男人,就要对自己下手狠一点
  3. 我终于开通了微信公众号
  4. JESD204B参数及时钟关系
  5. 高等数学基础概念的Python开发实现
  6. 使用Git管理多媒体文件
  7. 混改中光城投集团控股有限公司 合作方案是如何完成的?
  8. python永久删除文件_Python彻底删除文件夹及其子文件方式
  9. 游戏党福音,Google play游戏明年登录Windows
  10. 打CodeForces时一款好用的vscode插件,如何使用 如何更好地使用