Mysql 递归查询子类Id的所有父类Id
文章目录
- 问题描述
- 先看结果
- 表结构展示
- 实现递归查询集合
- 查询结果
- 修复数据
问题描述
最近开发过程中遇到一个问题,每次添加代理关系都要去递归查询一下它在不在这个代理关系树上.很麻烦也很浪费资源.想着把代理关系的父类全部存起来
先看结果

表结构展示
| 表名(t_agent_user_relation) | ||
| 字段名 | 字段类型 | 描述 |
| current_user_id | int | 当前用户id |
| superior_user_id | int | 代理用户id |
| parent_ids | varchar | 父类Id集合以逗号隔开 |
| parent_id | int | 父类ID |
| id | int | 主键 |
实现递归查询集合
因为没有对应函数,需要自行编写递归查询函数
createdefiner = root@`%` function getParentIds(child_id int) returns varchar(255)
BEGINDECLARE parent_id varchar(255) default '';DECLARE parent_ids VARCHAR(1500) default '';DECLARE count int;DECLARE sum int default 0;-- 获取当前子类的父类IDSELECT superior_user_id INTO parent_id FROM t_agent_user_relation WHERE current_user_id = child_id;-- 递归查询所有父类IDWHILE parent_id is not null && sum < 3DOSET parent_ids = CONCAT_WS(',', parent_ids, parent_id);SELECT count(1) into count FROM t_agent_user_relation WHERE current_user_id = parent_id;if count = 0 thenset parent_id = null;elseSELECT superior_user_id INTO parent_id FROM t_agent_user_relation WHERE current_user_id = parent_id;end if;-- 防止出现死循环if parent_id is not null && find_in_set(parent_id, parent_ids) > 0thenset sum = sum + 1;elseset sum = sum;end if;END WHILE;RETURN parent_ids;
END;
如果出现以下错误
[HY000][1418] This function has none of DETERMINISTIC, NO SQL, or READS SQL
执行
set global log_bin_trust_function_creators = 1;错误原因我就不在这里分析了,有兴趣的自己查询一下
查询结果
select current_user_id,superior_user_id,getParentIds(current_user_id) from t_agent_user_relation

修复数据
update t_agent_user_relation set parent_ids= getParentIds(current_user_id) where parent_ids is null
相关文章:
Mysql 递归查询子类Id的所有父类Id
文章目录 问题描述先看结果表结构展示实现递归查询集合查询结果修复数据 问题描述 最近开发过程中遇到一个问题,每次添加代理关系都要去递归查询一下它在不在这个代理关系树上.很麻烦也很浪费资源.想着把代理关系的父类全部存起来 先看结果 表结构展示 表名(t_agent_user_rela…...
设计模式 之单例模式
单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供全局访问点,使得该实例可以在程序的任何地方被访问。单例模式经常用于管理共享资源或限制对象创建数量的情况下。 实现一个单例模式需要注意以下几个关键点: 构造…...
ros2不同机器通讯时IP设置
看到这就是不同机器的IP地址,为了避免在路由器为不同的机器使用DHCP分配到上面的地址,可以设置DHCP分配的范围:(我的路由器是如下设置的,一般路由器型号都不一样,自己找一下) 防火墙设置-----&…...
Nginx模块开发之http过滤器filter
文章目录 什么是过滤模块Nginx相关数据结构介绍ngx_module_t的数据结构ngx_http_module_t数据结构ngx_command_s数据结构 相关宏定义filter(过滤器)实现Nginx模块开发流程Nginx 模块执行具体实现流程create_loc_confmerge_loc_confpostconfiguration修改…...
26 - 原型模式与享元模式:提升系统性能的利器
原型模式和享元模式,前者是在创建多个实例时,对创建过程的性能进行调优;后者是用减少创建实例的方式,来调优系统性能。这么看,你会不会觉得两个模式有点相互矛盾呢? 其实不然,它们的使用是分场…...
【Web安全】sqlmap的使用笔记及示例
【Web安全】sqlmap的使用笔记 文章目录 【Web安全】sqlmap的使用笔记1. 目标2. 脱库2.1. 脱库(补充) 3. 其他3.1. 其他(补充) 4. 绕过脚本tamper讲解 1. 目标 操作作用必要示例-u指定URL,检测注入点sqlmap -u http://…...
机器学习第12天:聚类
文章目录 机器学习专栏 无监督学习介绍 聚类 K-Means 使用方法 实例演示 代码解析 绘制决策边界 本章总结 机器学习专栏 机器学习_Nowl的博客-CSDN博客 无监督学习介绍 某位著名计算机科学家有句话:“如果智能是蛋糕,无监督学习将是蛋糕本体&a…...
若依框架导出下载pdf/excel以及导入打印等
一、打印文件 // 报表打印 handlePdf(row) {wayAPI(row.billcode).then((res) > {var binaryData [];binaryData.push(res);let url window.URL.createObjectURL(new Blob(binaryData, {type: "application/pdf"})); window.open("/static/pdf/web/v…...
汇编-PROC定义子过程(函数)
过程定义 过程用PROC和ENDP伪指令来声明, 并且必须为其分配一个名字(有效的标识符) 。目前为止, 我们所有编写的程序都包含了一个main过程, 例如: 当要创建的过程不是程序的启动过程时, 就用RET指令来结束它。RET强制…...
服务器主机安全的重要性及防护策略
在数字化时代,服务器主机安全是任何组织都必须高度重视的问题。无论是大型企业还是小型企业,无论是政府机构还是个人用户,都需要确保其服务器主机的安全,以防止数据泄露、网络攻击和系统瘫痪等严重后果。 一、服务器主机安全的重…...
PDF转成图片
使用开源库Apache PDFBox将PDF转换为图片 依赖 <dependency><groupId>org.apache.pdfbox</groupId><artifactId>fontbox</artifactId><version>2.0.4</version> </dependency> <dependency><groupId>org.apache…...
Qt无边框设计
//指定窗口为无边框 this->setWindowFlags(Qt::FramelessWindowHint | Qt::WindowMinMaxButtonsHint);重写鼠标事件: void mousePressEvent(QMouseEvent* event) override; void mouseMoveEvent(QMouseEvent* event) override;定义位置: QPoint dif…...
规则引擎Drools使用,0基础入门规则引擎Drools(二)高级语法
文章目录 系列文章索引五、规则属性1、enabled属性2、dialect属性3、salience属性4、no-loop属性5、activation-group属性6、agenda-group属性7、auto-focus属性8、timer属性9、date-effective属性10、date-expires属性 六、Drools高级语法1、global全局变量2、query查询3、fun…...
C语言二十三弹---求第N项斐波那契数列的值
C语言求第N项斐波那契数列的值 定义:斐波那契数列指的是这样一个数列:1,1,2,3,5,8,13,21,34,55,89…自然中的斐波那契数列࿰…...
Pickcode:教孩子们编码的新视觉语言
Pickcode 通过视觉课程、聊天机器人、游戏和绘图来教授编程。 Pickcode 是一种新的语言和编辑器,可以直观地指导用户编写代码来制作聊天机器人、动画图画和游戏。Pickcode 旨在让用户在学习更高级的语言之前能够充满信心地开始学习编码。 Pickcode 可视化编程语言…...
乐划锁屏插画大赏热度持续,进一步促进价值内容的创造与传播
锁屏,原本只是为了防止手机在口袋里“误触”而打造的功能,现如今逐渐成为文化传播领域的热门入口。乐划锁屏不断丰富锁屏内容和场景玩法,通过打造“乐划锁屏插画大赏”系列活动为广大内容创作者提供了更多展示自我的机会,丰富平台内容。 从2020年到2023年,乐划锁屏插画大赏已连…...
【ArcGIS Pro微课1000例】0034:矢量数据几何校正案例(Spatial Adjustment)
本案例讲解矢量数据几何校正,根据一个矢量数据去校正另外一个矢量数据。 文章目录 一、加载实验数据二、空间校正三、注意事项一、加载实验数据 在ArcGIS Pro中加载数据效果如下: design:需要校正的数据图层plan+roadcenter:目标图层可以看到,design图层没有在正确的位置…...
2023亚太杯数学建模B题:玻璃温室中的微气候法规,思路模型代码论文
问题B 玻璃温室中的微气候法规 赛题思路:思路获取见文末名片,第一时间更新 温室作物的产量受到各种气候因素的影响,包括温度、湿度和风速[1]。其中,适 宜的温度和风速是植物生长[2]的关键。为了调节玻璃温室内的温度、风速等气…...
Eclipse常用设置-乱码
在用Eclipse进行Java代码开发时,经常会遇到一些问题,记录下来,方便查看。 一、properties文件乱码 常用的配置文件properties里中文的乱码,不利于识别。 处理流程:Window -> Preferences -> General -> Ja…...
MySQL面试,MySQL事务,MySQL锁,MySQL集群,主从,MySQL分区,分表,InnoDB
文章目录 数据库-MySQLMySQL主从、集群模式简单介绍1、主从模式 Replication2、集群模式3、主从模式部署注意事项 UNION 和 UNION ALL 区别分库分表1.垂直拆分2、水平拆分 MySQL有哪些数据类型1、整数类型**,2、实数类型**,3、字符串类型**,4…...
知识图谱技术驱动的科研创新发现框架Idea2Story
1. 项目概述Idea2Story是一个基于知识图谱技术的自主科研发现框架,它能够帮助研究人员从海量学术文献中自动挖掘潜在的研究方向和创新点。这个框架的核心在于将传统文献检索工具升级为智能化的科研助手,让计算机像人类研究者一样"阅读"论文并建…...
OpenTinker模块化架构优化LLM智能体强化学习
1. OpenTinker:模块化架构重塑LLM智能体强化学习范式 在大型语言模型(LLM)向智能体形态演进的过程中,强化学习(RL)已成为超越监督微调的关键优化手段。然而传统RL框架的端到端设计模式,使得算法…...
OpenWrt 22.03新特性与防火墙迁移指南
1. OpenWrt 22.03版本深度解析OpenWrt项目团队在2022年9月正式发布了22.03稳定版,这是继21.02版本之后的重要升级。作为一名长期使用OpenWrt进行路由器定制开发的工程师,我在新版本发布后的第一时间就进行了全面测试。这个版本最引人注目的变化是防火墙子…...
Token的“双螺旋“结构:AI如何高效理解语言?
文章深入解析了Token在AI中的核心作用,从字节到语义的转换过程。通过BPE算法等手段,Token将文本进行高效压缩,类似乐高组件简化拼装。文章还探讨了Token化在中文与英文中的差异,以及Token如何驱动Transformer模型进行高效计算。最…...
xbatis:强大 ORM 框架,多版本更新亮点多,多种查询写法超方便!
推荐理由xbatis 强大之处显著,单表、连表操作均可,能让开发者少写 1/3 甚至 2/3 的持久层代码。其 API 简单、快捷、优雅、简洁,构建 SQL 能力强。即便有了 AI,好用的 ORM 仍不可忽视,除非后续不维护。各版本更新内容1…...
【仅限制造企业CTO可见】Dify工业知识库私有化部署性能压测报告:单节点支撑200+并发设备手册检索,TP99<850ms(附NVIDIA Jetson Orin实测参数)
更多请点击: https://intelliparadigm.com 第一章:Dify工业知识库智能检索 Dify 作为开源低代码 AI 应用开发平台,其内置的 RAG(检索增强生成)能力为构建垂直领域知识库提供了强大支撑。在工业场景中,设备…...
DP World Tour欧洲巡回赛携手HCLTech重建官网与球迷应用
DP World Tour(DPWT)欧洲巡回赛与HCLTech签署全球合作协议,旨在借助人工智能技术重新开发其官方网站和球迷应用程序。目前,双方已完成需求调研与范围界定工作,并启动了网站和应用的初步开发冲刺阶段。DPWT首席技术官Mi…...
抖音视频批量下载难题如何破解?高效工具让你的内容收集效率提升10倍
抖音视频批量下载难题如何破解?高效工具让你的内容收集效率提升10倍 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser f…...
二刷 LeetCode:152. 乘积最大子数组 416. 分割等和子集 复盘笔记
目录 一、152. 乘积最大子数组 题目回顾 思路复盘 核心思路:同时维护最大值和最小值 易错点 & 二刷心得 二、416. 分割等和子集 题目回顾 思路复盘 核心思路:0-1 背包 DP 易错点 & 二刷心得 三、两道题的共性总结 & 二刷收获 这两…...
【大白话说Java面试题】【Java基础篇】第22题:HashMap 和 HashSet 有哪些区别
第22题:HashMap 和 HashSet 有哪些区别 📚 回答: 核心对比: HashMap 和 HashSet 是 Java 集合框架中常用的两种集合类型,它们在数据存储结构、用途和实现原理上有显著差异。以下是详细对比: 1. 数据存储…...
