查询递归表SQL,分类表查询,递归表数据结构转平级查询优化SQL
表字段:
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相关推荐
- 事实表的分类:事务事实表,周期快照事实表,累计快照事实表
维度建模数仓领域中的事实表大致分以下三种:事务事实表,周期快照事实表,累计事实表. 事务事实表与周期快照事实表.累积快照事实表虽然使用相同的一致性维度,但是它们在内容构成以及业务描述上还是有很大的区别 ...
- sql查询语句_多字段分类汇总_多表合并
一.最初(最简单的入门实例,单个分类汇总) 1,查询语句/*药品费用分科室汇总*/ select c.sksxx02,sum(nvl(b.nfyxx06,0)) from yygli6 ...
- MySQL数据库性能优化由浅入深(表设计、慢查询、SQL索引优化、Explain分析、Show Profile分析、配置优化)
文章目录 0 SQL性能分析 1 表的设计合理化 1.1 为什么需要范式 1.2 三范式原理 1.3 什么样的表才满足三范式 2 慢查询 2.1 慢查询介绍 2.2 慢查询步骤 3 添加适当索引 3. ...
- mybatis框架实现一对多、多对多关系查询,以及递归查询(单表多级分类:省市区三级地址查询)
mybatis框架练习 mybatis框架中,包括实体类(这些实体类与数据库中的字段属性相对应),mybatis的配置文件(即mybatis-config.xml,这个配置文件用于连接实体类和orm( ...
- SQL图文讲解操作12-多表查询
|版权声明:本文为博主原创文章,未经博主允许不得转载.转载请附上原链接,博客地址:https://blog.csdn.net/sgsgy5 ## 1.1 目标 理解多表查询 理解子查询 能够创建视图 ...
- SQL语句汇总(终篇)—— 表联接与联接查询
上一篇博文说到相关子查询效率低下,那我们怎么能将不同表的信息一起查询出来呢?这就需要用到表联接. 和之前的UNION组合查询不同,UNION是将不同的表组合起来,也就是纵向联接,说白了就是竖着拼起来. ...
- OceanBase SQL 执行计划解读(二)──── 表连接和子查询
前文<OceanBase SQL 执行计划解读(一)>介绍了单表查询中基本的执行计划解读,本文主要介绍简单的表连接和子查询相关的执行计划. 本文假设你对常用的表连接算法已有了解,包括:嵌套 ...
- SQL学习(3)——表的复杂查询与函数操作
SQL学习(3)--表的复杂查询 1.视图 1.1.创建视图 1.1.1.基于单表的视图 1.1.2.基于多表的视图 1.2.查询视图 1.3.修改视图 1.4.更新视图 1.5.删除视图 2.子查询 ...
- 多表查询的分类及其查询语法
多表查询分类: 连接查询: 内连接:相当于查询A,B交集部分数据 内连接查询语法: 隐式内连接 ...
最新文章
- Robert算子的运用
- 同步异步网络搜集到的比喻
- 华为鸿蒙系统不卡,华为鸿蒙系统,到底能不能取代安卓?网友:细节决定成败...
- 文件件服务器,文件件服务器
- oracle rman备份 归档模式,Oracle RMAN备份归档与非归档模式
- XGBoost算法解析(非常详细)
- 高德地图 聚合效果
- 多线程程序的填坑笔记和多线程编程应该遵循的规则
- 工具类记录之Guawa的Splitter
- 思科VPLS解决方案
- 蓝牙基础知识进阶——Link Manager通用规则介绍
- 盘点OLED显示技术的几大优势
- 运动相机竞争升级:下一站模块化、自动化?
- 服务器参数知多少 带你一一认识这些参数
- 基于Java web的购物商城
- Python语法分析
- vue项目点击后,从左边或右边滑出组件,再次点击原路滑回。<transition>、transform
- 【计算机网络】一、概论
- Arduino Nano做NB-IoT透传项目
- 口令是计算机软件吗,Foxmail中的POP3口令是什么?