首页 > 数据库 >mysql 函数实现父子查询

mysql 函数实现父子查询

时间:2024-05-29 16:35:36浏览次数:19  
标签:sTempPar SET children 查询 父子 sTemp mysql id loop

DELIMITER //

CREATE FUNCTION get_all_father(rootId INT)
RETURNS varchar(1000) 
DETERMINISTIC
BEGIN
    DECLARE sTemp VARCHAR(1000);
    DECLARE sTempPar VARCHAR(1000); 
    SET sTemp = ''; 
    SET sTempPar =rootId; 
 
    #循环递归
    WHILE sTempPar is not null DO 
        #判断是否是第一个,不加的话第一个会为空
        IF sTemp != '' THEN
            SET sTemp = concat(sTemp,',',sTempPar);
        ELSE
            SET sTemp = sTempPar;
        END IF;
        
        SELECT group_concat(FParentID) INTO sTempPar FROM T_Account where FParentID<>PID and FIND_IN_SET(PID,sTempPar)>0; 
    END WHILE; 
 
RETURN sTemp; 
END //
DELIMITER ;


DELIMITER //

CREATE FUNCTION get_all_children(id INT)
RETURNS VARCHAR(2000)
DETERMINISTIC
BEGIN
    DECLARE children VARCHAR(2000);
    DECLARE loop_id INT;
    SET children = id;
    SET loop_id = id;
    WHILE loop_id IS NOT NULL DO
            IF id <> loop_id
            THEN
                SET children = CONCAT(children, ',', (SELECT GROUP_CONCAT(PID) FROM T_Account WHERE PID = loop_id));
            END IF;
      SET loop_id = (SELECT PID FROM T_Account WHERE FParentID = loop_id);
    END WHILE;
    RETURN children;
END //

DELIMITER ;


SELECT get_all_children(1) 

select get_all_father(5); 

 

标签:sTempPar,SET,children,查询,父子,sTemp,mysql,id,loop
From: https://www.cnblogs.com/linyijia/p/18220568

相关文章

  • mysql实现oracle的start with递归查询
    oracle查询语句selectdept_codefrom表名startwithdept_code='41311046430000001'connectbyPRIORid=PARENT_ID结果如下:改为mysql查询,实用函数实现selectsd.*from (select*from表名)sd, (select@pid:=(selectidfrom表名wheredept_code='4131......
  • Java语言,MySQL数据库;SSM 心理咨询预约管理系统19086(免费领源码)计算机毕业设计项目推荐
    目 录摘要1绪论1.1背景及意义1.2研究现状1.3ssm框架介绍1.4论文结构与章节安排2 心理咨询预约管理系统系统分析2.1可行性分析2.1.1技术可行性分析2.1.2经济可行性分析2.1.3法律可行性分析2.2系统功能分析2.2.1功能性分析2.2.2非功能......
  • MySQL安装教程(详细)
    文章目录一、安装准备1.1mysql数据库下载1.2数据库运行环境下载二、安装步骤2.1开始安装2.2选择安装类型2.3选择功能2.4检测安装环境2.5功能安装2.6功能安装完成,点击next2.7产品配置,点击next2.8网络通信配置2.9帐户设置(很重要)2.10数据库实例名设置,默认next......
  • mysql GROUP_CONCAT()函数
    一、GROUP_CONCAT函数语法函数语法:group_concat([DISTINCT]需要连接的字段[OrderBY排序字段ASC/DESC][Separator'分隔符'])GROUP_CONCAT()函数分隔符GROUP_CONCAT()函数默认是逗号分隔修改GROUP_CONCAT(exprSEPARATOR'分隔符')GROUP_CONCAT()函数去重G......
  • 基于Spring Boot+MySQL的物流智能化管理系统设计与实现
    目录1系统概述11.1研究背景11.2研究目的11.3系统设计思想12相关技术22.1MYSQL数据库22.2B/S结构32.3SpringBoot框架简介43系统分析43.1可行性分析43.1.1技术可行性43.1.2经济可行性53.1.3操作可行性53.2系统性能分析53.2.1系统安全性5......
  • MySQL--主从复制
    目录一、主从复制原理1.简要原理2.涉及到的文件3.涉及到的线程4.主从复制执行步骤(重点)二、主从复制搭建1.准备两台以上的数据库实例,要求数据库版本一致2.区分不同角色3.主库开启二进制日志4.主库创建专用复制用户,赋予权限5.备份主库数据,恢复从库6.开启从库复制功能......
  • mysql优化
    一、硬件层面优化1.0硬件选配DELL、HP、IBM、华为、浪潮。CPU:I、E内存:ECCIO:SAS、pci-eSSD、Nvmeflashraid卡:Raid10网卡:单卡单口云服务器:ECS、RDS、PolarDB、TDSQL1.1关闭NUMAa.bios级别:在bios层面numa关闭时,无论os层面的numa是否打开,都不会影响性......
  • Mysql(3)
    20240529约束条件:限制表中的数据,保证数据的准确,可靠的规则notnull/nullunsignedzerofillunique:唯一数据primarykey:主键,便于查询=notnull+unique主键约束:添加的约束规则主键字段:添加了主键约束的字段主键值:主键字段的值主键的作用:自动添加索引-index......
  • 使用MySQL主主复制加Keepalived实现高可用
    目录资源列表基础环境关闭防火墙关闭内核安全机制修改主机名时间同步一、安装MySQL准备yum源清理mariadb相关的包安装启动二、MySQL主主复制两个节点授权用户两个节点使用授权用户进行连接启动同步三、安装keepalived安装修改配置文件启动服务验证  ......
  • 在mysql上构建soctt库
    --1.创建部门表createtabledept(deptnoint(2)unsignedprimarykey,dnamevarchar(14),locvarchar(13));--2.添加部门数据insertintodept(deptno,dname,loc)values(10,'ACCOUNTING','NEWYORK'),(20,'RESEARCH','DALLAS')......