MySQL递归公用表表达式

😇作者介绍:一个有梦想、有理想、有目标的,且渴望能够学有所成的追梦人。
🎆学习格言:不读书的人,思想就会停止。——狄德罗
⛪️个人主页:进入博主主页
🗼专栏系列:MySQL知识
🌼欢迎小伙伴们访问到博主的文章内容,在浏览阅读过程发现需要纠正的地方,烦请指出,愿能与诸君一同成长!
目录
文章内容如下
✏️前言
✏️一、添加菜单表
✏️二、递归公用表表达式
✏️三、测试运行结果
✏️总结
文章内容如下
✏️前言
MySQL递归公用表表达式,简称(CTE)递归CTE是一种特殊的CTE,它可以用来执行递归查询询,即查询可以自顶向下或自底向上遍历层级结构。在一些特殊情况下,我们会常用到这个方法去处理一些特殊情况。下面就用菜单表的信息来演示‘自顶向下遍历层级’
✏️一、添加菜单表
👉在这之前我们先添加一张菜单表,方便后面测试,这里的菜单表仅仅提供参考,注意表的列名命名不算规范。运用到实际项目中的时候,要注意表列名的命名必须要规范哈。下面内容参考即可。代码如下
-- 菜单表 CREATE TABLE menu_table (menu_id int PRIMARY KEY AUTO_INCREMENT NOT NULL , -- 主键自增menu_order varchar(500) NULL , -- 层级IDmenu_icon varchar(20) NULL , -- 菜单图标menu_name varchar(20) NULL , -- 菜单名称menu_parent varchar(20) NULL , -- 父菜单名称menu_url varchar(100) NULL , -- 菜单urlmenu_permissionmark varchar(50) NULL , -- 权限标识menu_addtime datetime DEFAULT current_timestamp NULL , -- 菜单创建时间menu_level varchar(500) NULL , -- 菜单层级关联id(父级为0)menu_state int NULL DEFAULT 1 -- 菜单状态)COMMENT '菜单表',ENGINE = INNODB DEFAULT CHARSET=utf8 ; select * from menu_table ; -- 添加数据 INSERT INTO menu_table(menu_order,menu_icon,menu_name,menu_parent,menu_url,menu_permissionmark,menu_level) VALUES ('1','layui-icon-heart','系统管理','父级','indexs1.html','process.manage.list',null), ('2','layui-icon-heart','安全设置管理','父级','indexs2.html','role.manage.list',null), ('3','layui-icon-heart','工作流程','父级','indexs1.html','process.manage.list',null), ('4','layui-icon-heart','人力资源管理','父级','indexs2.html','role.manage.list',null), ('5','layui-icon-heart','企业信息管理','父级','indexs1.html','process.manage.list',null), ('6','layui-icon-heart','通讯管理','父级','indexs2.html','role.manage.list',null), ('7','layui-icon-heart','工作管理','父级','indexs1.html','process.manage.list',null), ('8','layui-icon-heart','时间管理','父级','indexs2.html','role.manage.list',null), ('9','layui-icon-heart','办公管理','父级','indexs1.html','process.manage.list',null), ('10','layui-icon-heart','组织架构管理','父级','indexs2.html','role.manage.list',null),('11','layui-icon-heart','用户管理','1子级','indexs1.html','process.manage.list','1'), ('12','layui-icon-heart','角色管理','1子级','indexs2.html','role.manage.list','1'), ('13','layui-icon-heart','权限管理','1子级','indexs1.html','process.manage.list','2'), ('14','layui-icon-heart','流程管理','1子级','indexs2.html','role.manage.list','3'), ('15','layui-icon-heart','考勤管理','1子级','indexs1.html','process.manage.list','4'), ('16','layui-icon-heart','公告管理','1子级','indexs2.html','role.manage.list','5'), ('17','layui-icon-heart','邮件管理','1子级','indexs1.html','process.manage.list','6'), ('18','layui-icon-heart','任务管理','1子级','indexs2.html','role.manage.list','7'), ('19','layui-icon-heart','日程管理','1子级','indexs1.html','process.manage.list','8'), ('20','layui-icon-heart','计划管理','1子级','indexs2.html','role.manage.list','9'), ('21','layui-icon-heart','文件管理','1子级','indexs1.html','process.manage.list','1'), ('22','layui-icon-heart','笔记管理','1子级','indexs2.html','role.manage.list','1'), ('23','layui-icon-heart','员工通讯管理','1子级','indexs1.html','process.manage.list','6'), ('24','layui-icon-heart','讨论管理','1子级','indexs2.html','role.manage.list','6'), ('25','layui-icon-heart','便签管理','1子级','indexs1.html','process.manage.list','1'), ('26','layui-icon-heart','部门管理','1子级','indexs2.html','role.manage.list','10'), ('27','layui-icon-heart','采购部','2子级','indexs2.html','role.manage.list','26'), ('28','layui-icon-heart','外出岗','3子级','indexs2.html','role.manage.list','27'), ('29','layui-icon-heart','出口进货岗','3子级','indexs2.html','role.manage.list','27'), ('30','layui-icon-heart','财务部','2子级','indexs2.html','role.manage.list','26'), ('31','layui-icon-heart','会计师岗位','3子级','indexs2.html','role.manage.list','30'), ('32','layui-icon-heart','收银员岗位','3子级','indexs2.html','role.manage.list','30'), ('33','layui-icon-heart','菜单管理','1子级','indexs2.html','role.manage.list','1'), ('34','layui-icon-heart','市场部','2子级','indexs2.html','role.manage.list','26'), ('35','layui-icon-heart','总经办','2子级','indexs2.html','role.manage.list','26')
✏️二、递归公用表表达式
👉通过这个表达式,根据菜单名称查询到与这个名称相关的所有菜单信息,比如:‘部门管理’,在部门管理下有‘财务部’,在财务部下有‘会记岗’等等,使用这个表达式完成这一效果。
代码如下
WITH RECURSIVE SubMenu AS (SELECTa.menu_id,a.menu_name,a.menu_order,a.menu_levelFROMmenu_table AS aWHEREa.menu_name = '部门管理'UNION ALLSELECTb.menu_id,b.menu_name,b.menu_order,b.menu_levelFROMmenu_table AS bINNER JOIN SubMenu sm ON b.menu_level = sm.menu_order ) SELECT * FROM SubMenu;WITH RECURSIVE SubMenu AS (...)定义了一个递归CTE,它首先选择所有menu_name为“部门管理”的条目,然后递归地选择每一个条目下的子条目。UNION ALL用来合并每次递归查询的结果。
✏️三、测试运行结果

✏️总结
在这种查询中,每一次递归调用都会基于前一次查询的结果集,直到达到某个终止条件(例如,没有更多的子条目)。

相关文章:
MySQL递归公用表表达式
😇作者介绍:一个有梦想、有理想、有目标的,且渴望能够学有所成的追梦人。 🎆学习格言:不读书的人,思想就会停止。——狄德罗 ⛪️个人主页:进入博主主页 🗼专栏系列:MySQL知识 &…...
深入 K8s 网络原理(一)- Flannel VXLAN 模式分析
1. 概述 这周集中聊下 K8s 的集群网络原理,我初步考虑分成3个方向: Pod-to-Pod 通信(同节点 or 跨节点),以 Flannel VXLAN 模式为例; Pod/External-to-Service 通信,以 iptables 实现为例&…...
fpga 8段4位数码管verilator模拟
8段4位数码管verilator模拟 seg.v module seg(input wire clk,input wire rst_n,output wire[7:0] SEG,output wire[3:0] SEL );reg[7:0] digit[0:15] {8h3f, 8h06, 8h5b, 8h4f, 8h66, 8h6d, 8h7d,8h07,8h7f,8h6f, 8h77, 8h7c, 8h39, 8h5e, 8h79, 8h71};reg[31:0] cnt 32…...
HttpURLConnection发送各种内容格式
通过java.net.HttpURLConnection类实现http post发送Content-Type为multipart/form-data的请求。 json处理使用com.fasterxml.jackson 图片压缩使用net.coobird.thumbnailator log使用org.slf4j 一些静态变量 private static final Charset charset StandardCharsets.UTF_8;…...
摇杆控制人物移动
摇杆控制人物移动 一、UI搭建二、3d模型搭建三、脚本JoyStickBar.csPlayerController.cs 工程在我资源里名字叫Joystickbar.unitypackage [连接](https://download.csdn.net/download/qq_42194657/12043019?spm1001.2014.3001.5503) 一、UI搭建 JoyStickBar是图片背景 JoySt…...
Jenkins自动化部署之后端
准备工作参考本人另外几篇Jenkins相关的文章 新建任务 添加参数配置 字符串参数:分支名称 多选框:项目名称(Extended Choice Parameter插件必备,插件安装参考我另外的文章) 这个分割规则自定义。只要根据Jenkins…...
Could not resolve com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.28.
1、首先进入阿里云maven仓库,在搜索栏输入无法下载的依赖名称,查询现有版本号,可以看到这里有2.9.34。 2、在build.gradle(Project)的buildscript闭包下替换为阿里云maven仓库: maven { url https://www.jitpack.io } maven { u…...
RK3588平台开发系列讲解(AI 篇)RKNN rknn_query函数详细说明
文章目录 一、查询 SDK 版本二、查询输入输出 tensor 个数三、查询输入 tensor 属性(用于通用 API 接口)四、查询输出 tensor 属性(用于通用 API 接口)五、查询模型推理的逐层耗时六、查询模型推理的总耗时七、查询模型的内存占用情况八、查询模型里用户自定义字符串九、查询原…...
15个主流设计灵感网站,激发你的创作灵感!
即时设计 即时设计是一种强大的云设计工具,已成为许多设计师、产品经理和开发人员的首选工具之一。即时设计用户可以使用内置的工具和功能快速创建和编辑设计,或与其他用户共享和合作。此外,即时设计还有一个丰富的资源社区,为用…...
Matlab:解非线性方程组
1、基于问题求解非线性方程组 例: xoptimvar(x,2); %将x定义为一个二元素优化变量 eq1exp(-exp(-(x(1)x(2))))x(2)*(1x(1)^2); %创建第一个方程作为优化等式表达式 eq2x(1)*cos(x(2))x(2)*sin(x(1))1/2; %创建第二个方程作为优化等式表达式 probe…...
面向 AI,重塑云基础设施、存储、芯片、Serverless……2023亚马逊云科技re:Invent中国行
一年一度亚马逊云科技重要的技术盛会 re:Invent 刚落下帷幕,2023 亚马逊云科技 re:Invent 中国行就将其中重要的信息与内容带给了中国市场和用户。作为全球的云计算巨头,今年亚马逊云科技可以说全面加码 AI,例如发布完整的端到端生成式 AI 技…...
【JDK新特性】JDK和Springboot各版本新特性介绍
目录 参考资料 以下是一些较新版本的JDK的主要新特性介绍: JDK 8: Lambda 表达式:引入了函数式编程的概念,使得代码更简洁、可读性更强。Stream API:提供了一种高效处理集合数据的方式,支持并行处理。默认…...
tomcat剖析:开篇
一、简介 本专栏为解析tomcat的专栏,用于一步步的从构建到执行,再到剖析tomcat的内部构造,然后再加上自己的理解,从0到1去认识我们日常开发中不可或缺的web容器,希望对之后的软件设计能够有所启示。 二、步骤 2.1构…...
华为路由器:DHCP配置
在大型企业网络中,会有大量的主机获取IP地址等网络参数。如果采用手工配置,则工作量大不好管理,若用户擅自更改网络参数,则容易导致IP冲突。 因此使用动态主机配置协议(DHCP)可以减少管理员的工作量&#x…...
(企业 / 公司项目)微服务OpenFeign怎么实现服务间调用?(含面试题)
Feign: 远程调用组件使用步骤,理解上面的图 后台系统中, 微服务和微服务之间的调用可以通过Feign组件来完成. Feign组件集成了Ribbon负载均衡策略(默认开启的, 使用轮询机制),Hystrix熔断器 (默认关闭的, 需要通过配置文件进行设置开启) 被调用的微服务…...
数据结构:图文详解 树与二叉树(树与二叉树的概念和性质,存储,遍历)
目录 一.树的概念 二.树中重要的概念 三.二叉树的概念 满二叉树 完全二叉树 四.二叉树的性质 五.二叉树的存储 六.二叉树的遍历 前序遍历 中序遍历 后序遍历 一.树的概念 树是一种非线性数据结构,它由节点和边组成。树的每个节点可以有零个或多个子节点…...
DM工作笔记-在windows下对DM7进行库还原恢复
提供了这些备份数据 在windows平台上,将这些备份数据还原到新库中。 首先实例得先停掉: 使用的软件console.exe: 重要步骤:①获取备份;②还原;③恢复 记住DMAP方式这个不要勾选,然后再获取备份…...
STM32软硬件CRC测速对比
硬件CRC配置 以及软硬件CRC速度对比 使用CUBEMX配置默认使用的是CRC32,从库中可以看出这一点 HAL库提供了以下两个计算函数 HAL_CRC_Accumulate(CRC_HandleTypeDef *hcrc, uint32_t pBuffer[], uint32_t BufferLength); 这个函数用于在已有的CRC校验结果的基础上累积…...
第九部分 图论
目录 例 相关概念 握手定理 例1 图的度数列 例 无向图的连通性 无向图的连通度 例2 例3 有向图D如图所示,求 A, A2, A3, A4,并回答诸问题: 中间有几章这里没有写,感兴趣可以自己去学,组合数学跟高中差不多,…...
如何用java实现对java虚拟机的性能监控?
要使用Java实现对Java虚拟机(JVM)的性能监控,可以使用Java Management Extensions(JMX)来获取和监控JVM的各种指标。以下是一个简单的示例代码,演示如何使用JMX监控JVM的内存使用情况: import …...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
NPOI操作EXCEL文件 ——CAD C# 二次开发
缺点:dll.版本容易加载错误。CAD加载插件时,没有加载所有类库。插件运行过程中用到某个类库,会从CAD的安装目录找,找不到就报错了。 【方案2】让CAD在加载过程中把类库加载到内存 【方案3】是发现缺少了哪个库,就用插件程序加载进…...
aardio 自动识别验证码输入
技术尝试 上周在发学习日志时有网友提议“在网页上识别验证码”,于是尝试整合图像识别与网页自动化技术,完成了这套模拟登录流程。核心思路是:截图验证码→OCR识别→自动填充表单→提交并验证结果。 代码在这里 import soImage; import we…...
React父子组件通信:Props怎么用?如何从父组件向子组件传递数据?
系列回顾: 在上一篇《React核心概念:State是什么?》中,我们学习了如何使用useState让一个组件拥有自己的内部数据(State),并通过一个计数器案例,实现了组件的自我更新。这很棒&#…...
MeshGPT 笔记
[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭!_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...
欢乐熊大话蓝牙知识17:多连接 BLE 怎么设计服务不会乱?分层思维来救场!
多连接 BLE 怎么设计服务不会乱?分层思维来救场! 作者按: 你是不是也遇到过 BLE 多连接时,调试现场像网吧“掉线风暴”? 温度传感器连上了,心率带丢了;一边 OTA 更新,一边通知卡壳。…...
【工具教程】多个条形码识别用条码内容对图片重命名,批量PDF条形码识别后用条码内容批量改名,使用教程及注意事项
一、条形码识别改名使用教程 打开软件并选择处理模式:打开软件后,根据要处理的文件类型,选择 “图片识别模式” 或 “PDF 识别模式”。如果是处理包含条形码的 PDF 文件,就选择 “PDF 识别模式”;若是处理图片文件&…...
MLP实战二:MLP 实现图像数字多分类
任务 实战(二):MLP 实现图像多分类 基于 mnist 数据集,建立 mlp 模型,实现 0-9 数字的十分类 task: 1、实现 mnist 数据载入,可视化图形数字; 2、完成数据预处理:图像数据维度转换与…...
