mysql 利用函数迭代查找所有父节点

Mysql 查询子节点所有的父节点(用法+详细解释) 文章目录业务场景“如何查询子节点所有的父节点”SQL及其使用上述SQL解释 业务场景 现在有一个表 t_user,包含如下两列 t_id | parent_id 1 | 0 2 | 1 3 | 0 4 | 2 5 | 4 通过自连接,形成一个树状结构: 这种结构经常应用在“菜单”、“职级”等场景中 问:如何查询子节点所有的父节点。例如,如何查询5上面的所有父节点 “如何查询子节点所有的父节点”SQL及其使用 SELECT @r AS _id 阅读详情

1.表结构及测试数据

DROP TABLE IF EXISTS `tree`;
CREATE TABLE `tree` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `pid` int(11) DEFAULT NULL,
  `tname` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Records of tree
-- ----------------------------
INSERT INTO `tree` VALUES ('1', '0', '集团');
INSERT INTO `tree` VALUES ('2', '1', '公司');
INSERT INTO `tree` VALUES ('3', '2', '部门');
INSERT INTO `tree` VALUES ('4', '1', '公司2');

2.函数

DROP FUNCTION IF EXISTS queryTree;
CREATE FUNCTION queryTree(TID VARCHAR(4000))
RETURNS VARCHAR(4000)
BEGIN
DECLARE sTemp VARCHAR(4000);
DECLARE sTempChd VARCHAR(4000);
DECLARE sTempName VARCHAR(4000);

SET sTemp='';
SET sTempName='';
SET sTempChd =TID;

SELECT tname INTO sTemp from tree where id=sTempChd;

WHILE sTempChd !="0" DO

IF sTempName !="" THEN
SET sTemp= CONCAT(sTemp,'/',sTempName);
END IF;

SELECT a.pid,b.tname
INTO sTempChd,sTempName
FROM tree a 
left join tree b on a.pid=b.id
WHERE a.id=sTempChd  ;


END WHILE;


RETURN sTemp;
END;

3.测试

select queryTree("3")

4.测试结果

在SQL的SELECT中实现循环查找、双层和多层循环(迭代)查找 SQL如何实现编程语言的for循环查询 MySQL的Select子查询 在SQL的SELECT中实现循环查找、双层和多层循环(迭代)查找 SQL如何实现编程语言的for循环查询 MySQL的Select子查询。 阅读详情

相关推荐

基于FaceX-Zoo实现的Face Mask Adding人脸戴口罩

人脸系列文章目录 文章目录人脸系列文章目录前言一、加口罩效果二、实现原理二、代码实现 前言 目前人脸加口罩均为在人脸位置贴图式的,非常不真实。前段时间京东开源一个基于PRnet实现的3D口罩拟合人脸,加口罩非常逼真,但是只是单独一个加口罩demo,没有完整的流程。于是本人结合人脸检测,关键点对齐。PRnet加口罩实现一个完整的加口罩流程。只需一个命令简单方便调用,实现人脸加口罩。 https://github.com/JDAI-CV/FaceX-Zoo 一、加口罩效果 下图可以看出效果还是非常逼真的

zengwb的博客 3390

mysql自连接递归查询所有父元素

已知某个id的值,需要查询这个id关联的所有父级的数据,如查询到该id的父类数据之后,还需要查询父类数据的爷爷辈数据,依次类推,直到查询到顶级。(SELECT @r := '{你的id}', @l := 0) vars,表member的结构(主要有可递归的字段id和parent_id)mysql自连接递归查询所有父元素。

m0_57915548的博客 801

聚类分析之——Kmeans算法(一)

原创地址:http://www.toutiao.com/i6399454239554273794/ 聚类分析是一种静态数据分析方法,常被用于数据挖掘、机器学习、模式识别等领域,聚类是一种无监督式的学习方法。它是在未知样本类别的情况下,通过计算样本彼此间的距离(欧式距离,马式距离,汉明距离,余弦距离等)来估计样本所属类别。从结构性来划分,聚类方法分为自上而下和自下而上两种方法。聚类的算法有很多

june2017的博客 3530

mysql 查询所有父子节点

mysql 查询所有父子节点 查询父节点 (包含查询节点) SELECT t.id FROM(SELECT @id idlist, (SELECT @id := GROUP_CONCAT(parent_id SEPARATOR ',') FROM wo_building_info WHERE FIND_IN_SET( id, @id)) sub FROM wo_building_info,(SELECT @id := 5) a WHERE @id IS NOT NULL) tl, wo_building_

weixin_37791473的博客 667

【深度学习】手把手教你在远程服务器上跑 YOLOv3 相关代码(含环境配置)

这篇文章主要记录了如何配置项目环境以及如何在远程服务器上跑 YOLOv3 模型。

作者正在煮茶中... 2383

【论文+代码】ZS-N2N实现小样本零网络图像去噪

本文涵盖论文原文讲解与代码复现。

weixin_46287760的博客 4002

MySQL通过自定义函数实现递归查询父级ID或者子级ID

类似地,可以根据需求自定义函数来查询指定节点的所有父级ID或者其他相关信息。在MySQL中,可以通过自定义函数实现递归查询父级ID或子级ID。

wgq2020的博客 673

Windows下Python调用D435i相机避坑指南:从SDK版本选择到RealSense Viewer报错解决

本文详细介绍了在Windows环境下使用Python调用Intel D435i相机的完整避坑指南。重点解决了SDK版本选择问题,推荐使用稳定的Intel RealSense SDK 2.54.2版本,并提供了从环境配置、常见报错解决到实际应用案例的全流程实践指导,帮助开发者高效完成相机部署与开发。

palm99的专栏 923

mysql 8+ 从子级找到上面10级父级,每一级的父级都要查询的案例

2、查询id=10的10级内的父级数据。1、创建表和测试数据。

进击的Ace 365

Python爬虫实战:爬取国家气象局台风路径数据的完整教程

国家气象局(如中国气象局)一般会在官方网站公布台风的实时路径,包括台风编号、名称、时间点、经纬度、中心气压、最大风速等信息。这些数据以图形和表格的形式呈现,有时以JSON或CSV文件形式下载。爬取这类数据,有助于构建台风数据库、历史路径分析、趋势预测等应用。本文详细介绍了如何通过Python爬取国家气象局发布的台风路径数据,涵盖了数据采集、解析、存储和可视化全流程。通过实践,你可以构建自己的台风数据库,结合机器学习开展路径预测和风险评估等高级分析。后续可结合深度学习技术,实现台风轨迹预测;

2201_76125261的博客 1024

基于Simulink的电力电子负载特性模拟仿真实例

电阻性负载是最简单的负载形式,其阻抗为纯电阻,电流和电压之间的关系符合欧姆定律。电阻性负载的特点是消耗能量,不会存储能量。本示例将以一个典型的直流电源供电系统为例,展示如何利用Simulink进行不同负载特性的仿真模拟。直流电源:提供固定电压输入。逆变器(可选):根据需要产生PWM调制信号,驱动负载。负载模块:模拟不同类型的负载特性,如电阻性负载、电感性负载和容性负载。测量模块:用于观察负载上的电压和电流波形。系统架构视图plaintext深色版本v| || |

xiaoheshang_123的博客 429

mysql根据父节点递归查询所有子节点

mysql根据父节点递归查询所有子节点 在开发中,我们经常遇到通过父级节点查询所有子节点的需求,我们知道在mysql中我们可以自定义函数的方式来实现这个功能,但是自定义函数根据父节点递归查询所有子节点的方法需要额外维护函数,故而增加了维护成本,于是我们有了通过直接改用sql 查询的方式来实现递归查询。 根据一个父节点查询所有子节点(包含自身) SELECT au.id FROM (SELECT * FROM t_app_user WHERE parent_id IS NOT NULL) au,

韩暄 9272

TIP 2024 | 跨类与跨域语义增强用于域泛化

域泛化方法旨在通过多样化的源域帮助开发一个在未知目标域上表现良好的通用模型。数据增强已被证明是增强计算机视觉中域泛化的有效方法。最近,基于语义级别的数据增强取得了显著成果。然而,这些方法主要集中在从类内和域内采样语义方向,限制了源域的多样性。为了解决这个问题,作者提出了一种新的方法,称为跨类与跨域语义增强(CDSA)。首先,作者引入了一种基于采样的方法CrossSmooth,从跨类中获取语义方向。然后,CrossVariance通过采样语义方向获取不同域的样式。

小白学视觉 211

关于mysql 迭代

在开发中经常遇到一些数据需要迭代才能查出,于是查了一下mysql如何实现对数据的的迭代,网上基本都是用函数实现的。但是都只是介绍写法,和实现效果。我们在实际情况中建立的表肯定是和网上给出不同的,这就让第一次接触函数的人一脸懵逼不知道该怎么弄,往往需要反复尝试才能成功。 于是我记录了一下,我用到的一条迭代函数语句,我会注明几个修改点。这样就基本可以根据说明修改完成后...

雨竹的博客 2177

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

MYSQL的递归查询(实现子父节点多级显示)

众所周知,目前的mysql版本中并不支持直接的递归查询,但是通过递归到迭代转化的思路,还是可以在一句SQL内实现树的递归查询的。这个得益于Mysql允许在SQL语句内使用@变量。以下是示例代码。 创建表格 CREATE TABLE `treenodes` ( `id` int , -- 节点ID `nodename` varchar (60), -- 节点名称 `pid` ...

萝卜&青菜的博客 4374

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

mysql 迭代函数_在mysql函数中循环遍历JSON对象

我有一个JSON对象,其中包含一份帐单下的产品列表.我想为其编写一个mysql函数,该函数从json读取数据并对其进行一个接一个的迭代,并将相同的数据插入到product和bill表中.这是我的json对象{"billNo":16,"date":"2017-13-11 09:05:01","customerName":"Vikas","total":350.0,"fixedCharges":100...

weixin_39692245的博客 243

Mysql的存储函数

MySql 一、mysql的迭代查询自定义函数 concat()函数 功能:将多个字符串连接成一个字符串。 语法:concat(str1, str2,…) 通过set给变量赋值 自定义函数的语法 create function 函数名([参数列表]) returns 数据类型 begin sql语句; return 值; end; #查询语句, SELECT * FROM org WHE...

weixin_45401140的博客 1694

mysql组织机构树迭代查询

mysql的迭代查询

u011935772的专栏 6563

mysql函数创建

参数:存储过程对待参数有三种方式:输入(IN),输出(OUT)和输入并输出(INOUT),因为有三种方式所以必须对参数指明其用途;对于存储函数只有一种方式:输入参数,因此不需要写IN;函数有一个returns type(注意这里的return后加上s),存储过程没有也不需要这个返回语句。另外需要说明的是,returns只能对function做指定,对函数而言这是强制的,它用来指定函数的返回类型,因此函数体内必须包含一个return值,即一句return的代码。

学海无涯,我用JAVA 6061

mysql 利用自定义函数 + find_in_set() 函数,迭代获取父数据

select * from sys_menu where find_in_set(menu_id,"1005,100,1"); select * from sys_menu where menu_id in ("1005","100","1"); select * from sys_menu where find_in_set(menu_id,queryParentMsg(1005)) select queryParentMsg(1005) DELIMITER $$ DROP FUNCTION IF.

weixin_38982591的博客 537

mysql 迭代函数_MySQL数据库8(二十四)函数

函数在MySQL中,函数分为两类:系统函数(内置函数)和自定义函数不管是内置函数还是用户自定义函数,都是使用select函数名(参数列表)内置函数字符串函数Mysql8 字符串函数char_length():判断字符串的字符数length():判断字符串的字节数(与字符集)concat():连接字符串instr():判断字符在目标字符串中是否存在,其开始位置从1开始,存在返回其位置,不存在返回0l...

weixin_35715335的博客 714

深入探究C++中的仿函数和迭代器——提升你的STL技能

深入探究C++中的仿函数和迭代器——提升你的STL技能

热爱编程的小K的博客 2258

mysql function select 赋值_关于mysql 迭代

在开发中经常遇到一些数据需要迭代才能查出,于是查了一下mysql如何实现对数据的的迭代,网上基本都是用函数实现的。但是都只是介绍写法,和实现效果。我们在实际情况中建立的表肯定是和网上给出不同的,这就让第一次接触函数的人一脸懵逼不知道该怎么弄,往往需要反复尝试才能成功。 于是我记录了一下,我用到的一条迭代函数语句,我会注明几个修改点。这样就基本可以根据说明修改完成后直接用了。先让我们看一下函数语句。...

weixin_39534208的博客 225

怎么利用迭代器写入mysql_range()是什么?为什么不生产迭代器?

本篇文章给大家带来的内容是关于range()是什么?为什么不生产迭代器?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。迭代器是 23 种设计模式中最常用的一种(之一),在 Python 中随处可见它的身影,我们经常用到它,但是却不一定意识到它的存在。在关于迭代器的系列文章中(链接见文末),我至少提到了 23 种生成迭代器的方法。有些方法是专门用于生成迭代器的,还有一些方法则是为了解...

weixin_39634194的博客 214

Python内置函数iter()详解 iter()函数的基本用法 获取可迭代对象的迭代器 迭代器的工作原理 自定义可迭代对象 总结——《跟老吕学Python编程》

如果你想创建自己的可迭代对象,你可以实现__iter__()和__next__()这两个特殊方法。__iter__()方法应该返回迭代器对象本身(通常是实例本身),而__next__()方法应该返回下一个可用的元素。当没有更多元素可用时,__next__()应该抛出一个异常。print(num) # 输出: 0 1 2 3 4在这个例子中,我们定义了一个名为MyNumbers的类,它实现了__iter__()和__next__()方法。当我们使用for...in循环遍历my_numbers。

Python老吕的博客 1819

Java习题之实现平方根(sqrt)函数

Math函数sqrt()方法的三种实现方法

tq02的博客 4661
上一篇: java 应用泛型精简curd代码
下一篇: mysql 利用触发器 在树形表添加修改时 维护路径
knife1220
博客等级 码龄15年 33粉丝 176原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值