当前位置: 首页 > news >正文

Mysql:通过一张表里的父子级,递归查询并且分组分级

递归函数WITH RECURSIVE语法

WITH RECURSIVE cte_name (column_list) AS (SELECT initial_query_resultUNION [ALL]SELECT recursive_queryFROM cte_nameWHERE condition
)
SELECT * FROM cte_name;

WITH RECURSIVE 关键字:表示要使用递归查询的方式处理数据。

cte_name:给这个临时的递归表取个名字,可以在初始查询和递归查询中引用。

column_list:表示cte_name查询表中包含的列名,列名之间用逗号分隔。

initial_query_result:表示初始的查询结果,应该与column_list中的列名对应。

UNION:表示将两个查询结果集进行联合,使用UNION ALL则表示保留重复数据。

recursive_query:表示递归查询语句,应当与column_list中的列名对应。

condition:表示递归查询的终止条件,需要使用cte_name中的列进行判断。

SELECT * FROM cte_name:

表示最终返回的查询结果集,可以通过cte_name查询 临时递归表 中的列名进行指定。

例子

表:gc_jzst_single_base

需求:要求返回这张表里符合条件的数据,且有父子级关系的,展示为同一组且分级,给后续业务调用

代码

WITH RECURSIVE t1 AS (SELECTsingle_id,old_build_single_id,single_name,bulid_code,1 AS LEVEL,single_id groupFlag FROMgc_jzst_single_base WHEREsingle_assort = '1' AND build_status != '0' AND single_type = 'DWGC_DTLX_0802' AND old_build_single_id IS NULL UNION ALLSELECTb.single_id,b.old_build_single_id,b.single_name,b.bulid_code,t1.LEVEL + 1,t1.groupFlag FROMgc_jzst_single_base bJOIN t1 WHEREb.old_build_single_id = t1.single_id AND b.single_assort = '1' AND b.build_status != '0' AND b.single_type = 'DWGC_DTLX_0802' AND b.old_build_single_id IS NOT NULL ) -- 终止条件部分
SELECT* 
FROMt1 
ORDER BYgroupFlag;

结果:满足条件

http://www.lryc.cn/news/367748.html

相关文章:

  • 数据结构之排序算法
  • 移动安全赋能化工能源行业智慧转型
  • 今天是放假带娃的一天
  • linux Ubuntu安装samba服务器与SSH远程登录
  • 纳什均衡:博弈论中的运作方式、示例以及囚徒困境
  • Linux之进程信号详解【上】
  • 【Spring Cloud】Eureka详细介绍及底层原理解析
  • 【清华大学】《自然语言处理》(刘知远)课程笔记 ——NLP Basics
  • 代码随想录 | Day17 | 二叉树:二叉树的最大深度最小深度
  • 【Linux】Socket编程基础
  • 关于stm32的软件复位
  • 规范系统运维:系统性能监控与优化的重要性与实践
  • 用python编撰一个电脑清理程序
  • 2024年【天津市安全员C证】免费试题及天津市安全员C证试题及解析
  • 【Python数据挖掘实战案例】机器学习LightGBM算法原理、特点、应用---基于鸢尾花iris数据集分类实战
  • 使用LabVIEW进行大数据数组操作的优化方法
  • 【Linux】(五)—— SSH远程登录和XShell使用
  • 前端怎么实现跨域请求?
  • sqlmap直接嗦 dnslog注入 sqllibs第8关
  • 数据结构笔记 3 串 数组 广义表
  • SpringCloud微服务GateWay网关使用与配置
  • win7补丁下载
  • 在Cisco Packet Tracer上配置NAT
  • Web前端工程师的前景:挑战与机遇并存
  • MySQL—多表查询—联合查询
  • 2024 Jiangsu Collegiate Programming Contest E. Divide 题解 主席树
  • C# WPF入门学习主线篇(十五)—— DockPanel布局容器
  • 基于SVPWM矢量控制的无速度传感器电机控制系统simulink建模与仿真
  • Linux操作系统:Zookeeper在虚拟环境下的安装与部署
  • 决策树Decision Tree