当前位置: 首页 > 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
http://www.lryc.cn/news/239854.html

相关文章:

  • 设计模式 之单例模式
  • ros2不同机器通讯时IP设置
  • Nginx模块开发之http过滤器filter
  • 26 - 原型模式与享元模式:提升系统性能的利器
  • 【Web安全】sqlmap的使用笔记及示例
  • 机器学习第12天:聚类
  • 若依框架导出下载pdf/excel以及导入打印等
  • 汇编-PROC定义子过程(函数)
  • 服务器主机安全的重要性及防护策略
  • PDF转成图片
  • Qt无边框设计
  • 规则引擎Drools使用,0基础入门规则引擎Drools(二)高级语法
  • C语言二十三弹---求第N项斐波那契数列的值
  • Pickcode:教孩子们编码的新视觉语言
  • 乐划锁屏插画大赏热度持续,进一步促进价值内容的创造与传播
  • 【ArcGIS Pro微课1000例】0034:矢量数据几何校正案例(Spatial Adjustment)
  • 2023亚太杯数学建模B题:玻璃温室中的微气候法规,思路模型代码论文
  • Eclipse常用设置-乱码
  • MySQL面试,MySQL事务,MySQL锁,MySQL集群,主从,MySQL分区,分表,InnoDB
  • HarmonyOS应用开发者认证题目满分指南
  • openssl+ SM2 + linux 签名校验开发实例(C++)
  • 有关Vue、微信小程序、UniApp中的CSS中的宽度width单位、自适应
  • 黑马React18: ReactRouter
  • 算法刷题-动态规划-1
  • 分享一篇很就以前的文档-VMware Vsphere菜鸟篇
  • QT中的lambda表达式
  • linux文件I/O:文件锁的概念、函数以及代码实现
  • MySQL数据库系统教程
  • 这样写postman实现参数化,阿里p8都直呼牛逼
  • 【Qt-25】控件篇