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

Mysql 递归查询子类Id的所有父类Id

文章目录

  • 问题描述
    • 先看结果
    • 表结构展示
    • 实现递归查询集合
    • 查询结果
    • 修复数据

问题描述

最近开发过程中遇到一个问题,每次添加代理关系都要去递归查询一下它在不在这个代理关系树上.很麻烦也很浪费资源.想着把代理关系的父类全部存起来

先看结果

在这里插入图片描述

表结构展示

表名(t_agent_user_relation)
字段名字段类型描述
current_user_idint当前用户id
superior_user_idint代理用户id
parent_idsvarchar父类Id集合以逗号隔开
parent_idint父类ID
idint主键

实现递归查询集合

因为没有对应函数,需要自行编写递归查询函数

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…...

设计模式 之单例模式

单例模式是一种创建型设计模式&#xff0c;它确保一个类只有一个实例&#xff0c;并提供全局访问点&#xff0c;使得该实例可以在程序的任何地方被访问。单例模式经常用于管理共享资源或限制对象创建数量的情况下。 实现一个单例模式需要注意以下几个关键点&#xff1a; 构造…...

ros2不同机器通讯时IP设置

看到这就是不同机器的IP地址&#xff0c;为了避免在路由器为不同的机器使用DHCP分配到上面的地址&#xff0c;可以设置DHCP分配的范围&#xff1a;&#xff08;我的路由器是如下设置的&#xff0c;一般路由器型号都不一样&#xff0c;自己找一下&#xff09; 防火墙设置-----&…...

Nginx模块开发之http过滤器filter

文章目录 什么是过滤模块Nginx相关数据结构介绍ngx_module_t的数据结构ngx_http_module_t数据结构ngx_command_s数据结构 相关宏定义filter&#xff08;过滤器&#xff09;实现Nginx模块开发流程Nginx 模块执行具体实现流程create_loc_confmerge_loc_confpostconfiguration修改…...

26 - 原型模式与享元模式:提升系统性能的利器

原型模式和享元模式&#xff0c;前者是在创建多个实例时&#xff0c;对创建过程的性能进行调优&#xff1b;后者是用减少创建实例的方式&#xff0c;来调优系统性能。这么看&#xff0c;你会不会觉得两个模式有点相互矛盾呢&#xff1f; 其实不然&#xff0c;它们的使用是分场…...

【Web安全】sqlmap的使用笔记及示例

【Web安全】sqlmap的使用笔记 文章目录 【Web安全】sqlmap的使用笔记1. 目标2. 脱库2.1. 脱库&#xff08;补充&#xff09; 3. 其他3.1. 其他&#xff08;补充&#xff09; 4. 绕过脚本tamper讲解 1. 目标 操作作用必要示例-u指定URL&#xff0c;检测注入点sqlmap -u http://…...

机器学习第12天:聚类

文章目录 机器学习专栏 无监督学习介绍 聚类 K-Means 使用方法 实例演示 代码解析 绘制决策边界 本章总结 机器学习专栏 机器学习_Nowl的博客-CSDN博客 无监督学习介绍 某位著名计算机科学家有句话&#xff1a;“如果智能是蛋糕&#xff0c;无监督学习将是蛋糕本体&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伪指令来声明&#xff0c; 并且必须为其分配一个名字(有效的标识符) 。目前为止&#xff0c; 我们所有编写的程序都包含了一个main过程&#xff0c; 例如&#xff1a; 当要创建的过程不是程序的启动过程时&#xff0c; 就用RET指令来结束它。RET强制…...

服务器主机安全的重要性及防护策略

在数字化时代&#xff0c;服务器主机安全是任何组织都必须高度重视的问题。无论是大型企业还是小型企业&#xff0c;无论是政府机构还是个人用户&#xff0c;都需要确保其服务器主机的安全&#xff0c;以防止数据泄露、网络攻击和系统瘫痪等严重后果。 一、服务器主机安全的重…...

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);重写鼠标事件&#xff1a; void mousePressEvent(QMouseEvent* event) override; void mouseMoveEvent(QMouseEvent* event) override;定义位置&#xff1a; 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项斐波那契数列的值 定义&#xff1a;斐波那契数列指的是这样一个数列&#xff1a;1&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;5&#xff0c;8&#xff0c;13&#xff0c;21&#xff0c;34&#xff0c;55&#xff0c;89…自然中的斐波那契数列&#xff0…...

Pickcode:教孩子们编码的新视觉语言

Pickcode 通过视觉课程、聊天机器人、游戏和绘图来教授编程。 Pickcode 是一种新的语言和编辑器&#xff0c;可以直观地指导用户编写代码来制作聊天机器人、动画图画和游戏。Pickcode 旨在让用户在学习更高级的语言之前能够充满信心地开始学习编码。 Pickcode 可视化编程语言…...

乐划锁屏插画大赏热度持续,进一步促进价值内容的创造与传播

锁屏,原本只是为了防止手机在口袋里“误触”而打造的功能,现如今逐渐成为文化传播领域的热门入口。乐划锁屏不断丰富锁屏内容和场景玩法,通过打造“乐划锁屏插画大赏”系列活动为广大内容创作者提供了更多展示自我的机会,丰富平台内容。 从2020年到2023年,乐划锁屏插画大赏已连…...

【ArcGIS Pro微课1000例】0034:矢量数据几何校正案例(Spatial Adjustment)

本案例讲解矢量数据几何校正,根据一个矢量数据去校正另外一个矢量数据。 文章目录 一、加载实验数据二、空间校正三、注意事项一、加载实验数据 在ArcGIS Pro中加载数据效果如下: design:需要校正的数据图层plan+roadcenter:目标图层可以看到,design图层没有在正确的位置…...

2023亚太杯数学建模B题:玻璃温室中的微气候法规,思路模型代码论文

问题B 玻璃温室中的微气候法规 赛题思路&#xff1a;思路获取见文末名片&#xff0c;第一时间更新 温室作物的产量受到各种气候因素的影响&#xff0c;包括温度、湿度和风速[1]。其中&#xff0c;适 宜的温度和风速是植物生长[2]的关键。为了调节玻璃温室内的温度、风速等气…...

Eclipse常用设置-乱码

在用Eclipse进行Java代码开发时&#xff0c;经常会遇到一些问题&#xff0c;记录下来&#xff0c;方便查看。 一、properties文件乱码 常用的配置文件properties里中文的乱码&#xff0c;不利于识别。 处理流程&#xff1a;Window -> Preferences -> General -> Ja…...

MySQL面试,MySQL事务,MySQL锁,MySQL集群,主从,MySQL分区,分表,InnoDB

文章目录 数据库-MySQLMySQL主从、集群模式简单介绍1、主从模式 Replication2、集群模式3、主从模式部署注意事项 UNION 和 UNION ALL 区别分库分表1.垂直拆分2、水平拆分 MySQL有哪些数据类型1、整数类型**&#xff0c;2、实数类型**&#xff0c;3、字符串类型**&#xff0c;4…...

RE-DTER最新创新改进系列:用经典融合合混合注意力机制CBAM,通道注意力和空间注意力相结合,助力redter新模型快速涨点!

RE-DTER最新创新改进系列&#xff1a;用经典融合合混合注意力机制CBAM&#xff0c;通道注意力和空间注意力相结合&#xff0c;助力redter新模型快速涨点&#xff01; 购买相关资料后畅享一对一答疑&#xff01; 畅享超多免费持续更新且可大幅度提升文章档次的纯干货工具&…...

从‘sm_89不兼容’错误聊起:给你的PyTorch环境管理上个保险(含Conda虚拟环境、Docker镜像清单)

深度学习环境治理实战&#xff1a;从CUDA兼容到跨平台部署 当你的RTX 4060显卡遇到sm_89不兼容错误时&#xff0c;这不仅仅是版本号的问题&#xff0c;而是整个深度学习环境治理体系的警报。本文将带你从单次故障修复升级到系统性解决方案&#xff0c;构建真正健壮的AI开发基础…...

告别幽灵刹车!用4D毫米波雷达解决城市道路误触发难题(附大陆/采埃孚实测数据)

4D毫米波雷达&#xff1a;破解城市自动驾驶误刹车的终极武器 清晨七点的城市高架桥上&#xff0c;一辆搭载传统3D毫米波雷达的自动驾驶测试车突然急刹——系统将前方30米处的限高架误判为障碍物。这种被称为"幽灵刹车"的现象&#xff0c;正是困扰自动驾驶行业多年的技…...

如何高效使用Dragonfly2 API:RESTful接口和gRPC服务的完整指南

如何高效使用Dragonfly2 API&#xff1a;RESTful接口和gRPC服务的完整指南 【免费下载链接】Dragonfly2 Delivers efficient, stable, and secure data distribution and acceleration powered by P2P technology, with an optional content‑addressable filesystem that acce…...

为什么92%的医疗AI项目卡在合规验收?Dify医疗问答模块的6类高危数据泄露场景及对应21项配置加固项(含真实渗透测试报告节选)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Dify医疗数据问答合规处理的行业困局与破局逻辑 在医疗AI应用落地过程中&#xff0c;基于Dify构建的问答系统常面临数据隐私、监管合规与临床可用性三重张力。患者病历、检验报告等敏感信息一旦未经脱敏…...

Sunshine游戏串流:打造个人云游戏服务器的完整技术指南

Sunshine游戏串流&#xff1a;打造个人云游戏服务器的完整技术指南 【免费下载链接】Sunshine Self-hosted game stream host for Moonlight. 项目地址: https://gitcode.com/GitHub_Trending/su/Sunshine Sunshine是一款开源的游戏串流服务器软件&#xff0c;能够将高性…...

从零构建高效项目脚手架:Node.js CLI工具设计与工程化实践

1. 项目概述&#xff1a;从零到一&#xff0c;如何构建一个高效的项目脚手架工具 在多年的全栈开发和团队协作中&#xff0c;我无数次面对这样的场景&#xff1a;启动一个新项目&#xff0c;无论是前端应用、后端服务还是一个完整的全栈项目&#xff0c;第一步总是重复且繁琐的…...

Android 14开发调试遇阻?手把手教你用vdc命令解决adb remount报错

Android 14系统调试实战&#xff1a;深入解析checkpoint机制与vdc命令应用 在Android 14系统开发过程中&#xff0c;许多工程师都遇到过adb remount命令突然失效的困扰。当你正急于修改系统文件进行调试&#xff0c;终端却弹出"Cannot use remount when a checkpoint is i…...

Verbalized Sampling技术:提升LLM生成多样性的关键方法

1. Verbalized Sampling技术解析&#xff1a;如何突破LLM生成多样性瓶颈在大语言模型的实际应用中&#xff0c;我们经常遇到这样的困境&#xff1a;模型生成的文本虽然语法正确、语义连贯&#xff0c;但内容却显得千篇一律。这种生成多样性的缺失严重限制了LLM在创意写作、对话…...

2025届必备的六大AI学术方案解析与推荐

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 凭借自然语言处理以及机器学习模型&#xff0c;人工智能技术给学术论文写作提供了高效辅助工…...