精华内容
下载资源
问答
  • MYSQL递归查询所有父节点
    千次阅读
    2021-04-09 15:22:54

    MYSQL递归查询所有父节点

    1、表结构:

    CREATE TABLE `t_busi_system` (
      `ID` varchar(64) NOT NULL COMMENT '标识',
      `PARENT_ID` varchar(64) DEFAULT NULL COMMENT '父id',
      `CREATE_DATE` varchar(64) DEFAULT NULL COMMENT '创建时间',
      `CREATE_USER_ID` varchar(64) DEFAULT NULL COMMENT '创建人id',
      `CREATE_USER_NAME` varchar(64) DEFAULT NULL COMMENT '创建人姓名',
      `LAST_UPDATE_DATE` varchar(64) DEFAULT NULL COMMENT '最后更新时间',
      `LAST_UPDATE_USER_ID` varchar(64) DEFAULT NULL COMMENT '最后更新人id',
      `LAST_UPDATE_USER_NAME` varchar(64) DEFAULT NULL COMMENT '最后更新人姓名',
      `SYSTEM_NAME` varchar(255) DEFAULT NULL COMMENT '系统名称'
      PRIMARY KEY (`ID`)
    )

    2、SQL:

    SELECT T2.id, T2.SYSTEM_NAME
    FROM ( 
        SELECT 
            @r AS _id, 
            (SELECT @r := parent_id FROM T_BUSI_SYSTEM WHERE id = _id) AS parent_id, 
            @l := @l + 1 AS lvl 
        FROM 
            (SELECT @r := '065efb0ee42e4c77a401bcf0f3eccf20', @l := 0) vars,  
            T_BUSI_SYSTEM h 
        WHERE @r <> 0) T1 
    JOIN T_BUSI_SYSTEM T2 
    ON T1._id = T2.id 
    ORDER BY T1.lvl DESC
    更多相关内容
  • 本程序写了两个sql存储过程,子节点查询算是照搬了,父节点查询是逆思维弄的
  • NAVICAT中截图表结构如下图随便创建一个类型的表格查询数据查询父节点代码如下BEGINDECLARE i varchar(100) default '';DECLARE j varchar(1000) default rootId;WHILE rootId is not null doSET i =(SELECT parent_...

    NAVICAT中截图

    表结构如下图

    随便创建一个类型的表格查询数据

    查询父节点

    代码如下

    BEGIN

    DECLARE i varchar(100) default '';

    DECLARE j varchar(1000) default rootId;

    WHILE rootId is not null do

    SET i =(SELECT parent_id FROM paternal_tree WHERE id = rootId);

    IF i is not null THEN

    SET j = concat(j, ',', i);

    SET rootId = i;

    ELSE

    SET rootId = i;

    END IF;

    END WHILE;

    return j;

    END

    截图如下所示

    注意下方需要加入的参数,和返回类型,类型选对。最后调用该函数就行

    查询子节点类似,这里贴上代码就行。

    BEGIN

    DECLARE str varchar(2000);

    DECLARE cid varchar(100);

    SET str = '$';

    SET cid = rootId;

    WHILE cid is not null DO

    SET str = concat(str, ',', cid);

    SELECT group_concat(id) INTO cid FROM paternal_tree where FIND_IN_SET(parent_id, cid) > 0;

    END WHILE;

    RETURN str;

    END

    这里在调用就行。

    展开全文
  • SqlServer父节点与子节点查询递归 在最近老是用到这个SQL,所以记下来了: 1:创建表 CREATE TABLE [dbo].[BD_Booklet]( [ObjID] [int] IDENTITY(1,1) NOT NULL, [P ... 总结获取原生JS(javascript)的父节点、子节点...

    查子集合

    --drop FUNCTION `getChildList`

    CREATE FUNCTION `getChildList`(rootId varchar())

    RETURNS varchar()

    BEGIN

    DECLARE str varchar();

    DECLARE cid varchar();

    SET str = '$';

    SET cid = rootId;

    WHILE cid is not null DO

    SET str = concat(str, ',', cid);

    SELECT group_concat(id) INTO cid FROM treeNodes where FIND_IN_SET(parentid, cid) > ;

    END WHILE;

    RETURN str;

    END

    select getParentList('001001001');

    select * from sbkfwh where FIND_IN_SET(id,getChildList('001001001'))

    对上面的改进:

    set global log_bin_trust_function_creators = 1;

    CREATE FUNCTION `getChildList`(rootId varchar(100),which_level INTEGER)

    RETURNS varchar(2000)

    BEGIN

    DECLARE str varchar(2000); 这里可能容纳不下,可以打点。

    DECLARE cid varchar(100); 这里可能太短,导致返回的str太小,可以大点。

    DECLARE curr_level integer ;

    SET str = '';

    SET cid = rootId;

    set curr_level = 1;

    WHILE (cid is not null ) and ( curr_level <= which_level ) DO

    SELECT group_concat(id) INTO cid FROM users where FIND_IN_SET(parent_id, cid) > 0;

    set curr_level = curr_level + 1;

    SET str = concat(str, ',', cid);

    END WHILE;

    RETURN trim( BOTH ',' FROM str );

    END

    上面程序运行如下:

    输入1,1, 结果:4,5,14,15,16,17,18,19,1001,1002,1006,1013,1014

    输入1,2 :结果:4,5,14,15,16,17,18,19,1001,1002,1006,1013,1014,7,8

    Web网页树形列表中实现选中父节点则子节点全选和不选中父则子全不选

    需要实现的功能:选中父节点对应子节点全选:不选中父节点,对应子节点也不选中 如下图所示,选中车队,对应车队中车辆也全部选中,以实现车队中所有车辆在地图上的显示. 选中cqupt ...

    SqlServer父节点与子节点查询及递归

    在最近老是用到这个SQL,所以记下来了: 1:创建表 CREATE TABLE [dbo].[BD_Booklet]( [ObjID] [int] IDENTITY(1,1) NOT NULL, [P ...

    总结获取原生JS&lpar;javascript&rpar;的父节点、子节点、兄弟节点

    关于原生JS获取节点,一直是个头疼的问题,而且调用方法的名字又贼长了,所以我选择用JQ,好像跑题了-- 话不多说看代码 获取父节点 及 父节点下所有子节点(兄弟节点)

    Jquery选择器之父节点的子节点

    今天review代码,发现有哥们这么写 var span = $($("span"),$("#main")); 我百思不得其解,$(a,b)又好像在哪里见过,后 ...

    cocos2d-x 父节点和子节点执行不同动作

    Test6::Test6() { CCSprite* sp1 = CCSprite::create(s_pPathSister1); CCSprite* sp11 = CCSprite::create ...

    C&num;中treeview的问题,如何区分根节点和子节点以及根节点和根节点的兄弟节点?

    根节点的Level属性为0,一级子节点Level属性为1,二级子节点Level属性为2,以此类推:同级节点可以用索引.名称.文本来区分.用索引区分根节点时,TreeView.Nodes[0]就是第一个 ...

    jQuery获取节点和子节点文本的方法

    本节主要介绍了jQuery如何获取节点和子节点文本,下面有个示例,大家可以参考下 对于下面的html片段, ? 1

    test t ...

    zTree实现清空选中的第一个节点的子节点

    zTree实现清空选中的第一个节点的子节点 1.实现源代码

    zTree实现基本 ...

    JavaScript的DOM编程--04--获取元素节点的子节点

    获取元素节点的子节点(**只有元素节点才有子节点!!) 1). childNodes 属性获取全部的子节点, 但该方法不实用. 因为如果要获取指定的节点 的指定子节点的集合, 可以直接调用元素节点的 ...

    随机推荐

    转载:一幅图弄清DFT与DTFT&comma;DFS的关系

    转载:http://www.cnblogs.com/BitArt/archive/2012/11/24/2786390.html 很多同学学习了数字信号处理之后,被里面的几个名词搞的晕头转向,比如DF ...

    Gradle学习系列之三——读懂Gradle语法

    在本系列的上篇文章中,我们讲到了创建Task的多种方法,在本篇文章中,我们将学习如何读懂Gradle. 请通过以下方式下载本系列文章的Github示例代码: git clone https://git ...

    AppInventor学习笔记(四)&mdash&semi;&mdash&semi;打地鼠应用学习

    一.组件设计 1.整体预览 2.图片精灵的添加 (1)首先加入一个画布进去 调节属性如图 (2)添加精灵 添加精灵,然后上传张图片进行属性修改 3.加入Clock 直接加入,设定为1000ms 二.B ...

    【区间选点问题】uva 10148 - Advertisement

    区间选点问题,即数轴上有n个闭区间[l1i, ri],取尽量少的点,使得每个区间内都至少有一个点. The Department of Recreation has decided that it m ...

    centos安装nodejs和mongodb

    安装nodejs: Run as root on RHEL, CentOS or Fedora, for Node.js v4 LTS Argon: curl --silent --location ...

    在android中如何查看sqlite数据表结构,以及data文件打不开问题

    1.root你的手机 2.cmd进入DOS界面,并且cd 转换目录到AndroidSDK\platform-tools中 3.输入adb shell 4.输入su,进入root权限,此时$变为#,输入 ...

    不可综合的verilog语句分析

    前半部分转自http://www.cnblogs.com/Mrseven/articles/2247657.html,后半部分为自己测试结果. 基础知识:verilog 不可综合语句 (1)所有综合工 ...

    如何使用Maven的archetype快速生成一个新项目(解决生成项目目录不完整问题)

    Maven的archetype Plugin可能大家都听过,但不一定都能很好地用好它.缺省地如果你使用 mvn archetype:generate  会从maven的Repository里查找所有支 ...

    android 防止反编译的若干方法

    第一种方式:混淆策略 混淆策略是每个应用必须增加的一种防护策略,同时他不仅是为了防护,也是为了减小应用安装包的大小,所以他是每个应用发版之前必须要添加的一项功能,现在混淆策略一般有两种: 对代码的混淆 ...

    5随机到7随机的C&plus;&plus;实现

    一.5随机到7随机 //给定条件 int Rand1To5(){ + ; } //实现代码,使用插空法和筛的过程 int Rand1To7(){ ; do{ tmp = (Rand1To5() - ) ...

    展开全文
  • 根据id查询父节点,具体需要修改的地方笔者已在注释中给大家作了注解DELIMITER $$USE `yjlc_platform`$$-- getCompanyParent 为函数名DROP FUNCTION IF EXISTS `getCompanyParent`$$-- getCompanyParent 为函数名 ...

    根据id查询父节点,具体需要修改的地方笔者已在注释中给大家作了注解

    DELIMITER $$

    USE `yjlc_platform`$$

    -- getCompanyParent 为函数名

    DROP FUNCTION IF EXISTS `getCompanyParent`$$

    -- getCompanyParent 为函数名 rootId为参数,可以自定义;初学者可以不用更改

    CREATE DEFINER=`sysdbuser`@`%` FUNCTION `getCompanyParent`(rootId INT(36)) RETURNS VARCHAR(1000) CHARSET utf8

    BEGIN

    DECLARE ptemp VARCHAR(1000);

    DECLARE ctemp VARCHAR(1000);

    SET ptemp = '#';

    SET ctemp = rootId;

    WHILE ctemp IS NOT NULL DO

    SET ptemp = CONCAT(ptemp, ',', ctemp);

    SELECT GROUP_CONCAT(id)

    -- id为主键id

    INTO ctemp

    -- company为查询的哪张表

    FROM company

    -- parent_id为该条数据的父id,根据自己定义的字段进行更改

    WHERE FIND_IN_SET(parent_id, ctemp) > 0;

    END WHILE;

    RETURN ptemp;

    END$$

    DELIMITER ;

    -- 根据函数查询父节点 6为要查询的哪个子节点id

    SELECT * FROM company WHERE FIND_IN_SET(id, getCompanyParent(6));

    根据id查询子节点

    DELIMITER $$

    USE `yjlc_platform`$$

    -- COMPANY_CHILD 函数名

    DROP FUNCTION IF EXISTS `COMPANY_CHILD`$$

    CREATE DEFINER=`sysdbuser`@`%` FUNCTION `COMPANY_CHILD`(rootId INT) RETURNS VARCHAR(1000) CHARSET utf8

    BEGIN

    DECLARE sTemp VARCHAR(1000);

    DECLARE sTempChd VARCHAR(1000);

    SET sTemp= '$';

    SET sTempChd =CAST(rootId AS CHAR);

    WHILE sTempChd IS NOT NULL DO

    SET sTemp = CONCAT(sTemp,',',sTempChd);

    -- id为主键id company为表名 - parent_id为父id

    SELECT GROUP_CONCAT(id) INTO sTempChd FROM `company` WHERE FIND_IN_SET(parent_id,sTempChd)>0;

    END WHILE;

    RETURN SUBSTRING(sTemp,3);

    END$$

    DELIMITER ;

    -- 根据id查询子节点

    SELECT * FROM company WHERE FIND_IN_SET(id, COMPANY_CHILD(6));

    以上代码仅供参考,若以上代码中有不足的地方请广大博友见谅!

    来源:https://www.cnblogs.com/chenyuanbo/p/9843747.html

    展开全文
  • #说明:area_id表示当前节点,are_area_id表示父节点#mysql向下递归查询子节点CREATE FUNCTION getChildListById(id varchar(32))RETURNS varchar(4000)BEGINDECLARE str varchar(4000);DECLARE cid varchar(4000);...
  • 作者:pany时间:2019-3-12 21:36“收获之前你一定得先付出,这是铁律”一、背景在项目中,需要查询父节点下所有的子节点,我的同事是利用递归查询的,我发现他是参考网上的例子写的。地址:...
  • 1.表结构CREATE TABLE folder(id BIGINT(20) NOT NULL,parent_id BIGINT(20) ...2.根据传入id查询所有子节点及其的id创建函数:CREATE FUNCTION `getParList`(rootId BIGINT)RETURNS varchar(1000)BEGINDECLARE ...
  • 表结构 treeNodes id ...查集合 --drop FUNCTION `getParentList` CREATE FUNCTION `getParentList`(rootId varchar(100)) RETURNS varchar(1000) BEGIN DECLARE fid varchar(100) defa...
  • mysql递归查找父节点

    千次阅读 2020-01-07 00:21:44
    用存储过程查找父节点: 把找到的数据插入临时表。@lastid是为了防止出现死循环。 # SELECT * FROM db1 . t1 ; drop procedure if exists p1 ; delimiter $ create procedure p1 ( in pid integer ) ...
  • MySQL递归查询树状表的子节点、父节点...本程序重点参考了下面的资料,写了两个sql存储过程,子节点查询算是照搬了,父节点查询是逆思维弄的。表结构和表数据就不公示了,查询的表user_role,主键是id,每条记录有...
  • 1.问题描述: 现有一树形机构数据表,只有子父关系...写一个递归查询父节点的函数 ①创建函数向导 ②函数内容 编写完成点保存,然后就可以用了 CREATE DEFINER=`root`@`%` FUNCTION `getParentNodeList`..
  • 背景 项目中遇到一个需求,要求查处菜单节点的所有节点,在网上查了一下,大多数的... `parent_id` int(11) DEFAULT NULL COMMENT '父节点id', `menu_name` varchar(128) DEFAULT NULL COMMENT '菜单名称', `menu_ur
  • mysql中如何完成节点下的所有节点或节点上的所有父节点查询? 在Oracle中我们知道有一个Hierarchical Queries可以通过CONNECT BY来查询,但是,在MySQL中还没有对应的函数!!! 下面给出一个function来完成的方法 ...
  • 本文通过实例给大家介绍了sql server递归子节点、父节点sql查询表结构的实例解析,非常不错,具有参考借鉴价值,需要的的朋友参考下
  • mysql根据父节点递归查询所有子节点

    千次阅读 2021-04-12 17:34:19
    根据一个父节点查询所有子节点(包含自身) SELECT au.id FROM (SELECT * FROM t_app_user WHERE parent_id IS NOT NULL) au, (SELECT @pid := '1') pd WHERE FIND_IN_SET(parent_id, @pid) > 0 AND @pid :=...
  • 集合 --drop FUNCTION `getParentList` CREATE FUNCTION `getParentList`(rootId varchar(100)) RETURNS varchar(1000) BEGIN DECLARE fid varchar(100) default ''; DECLARE str varchar(1000) def...
  • 对于数据库中的树形结构数据,我们经常会有一种需求,给定一个父节点查询这个父节点下所有的子节点,或者给定一个子节点,查询这个子节点上的所有父节点。 接下来,我将介绍如何在MySql中使用函数来实现递归。 1....
  • 业务描述:机构向下管理,需要获取每个机构的所有上级节点,并得到对应的级别效果,如图:执行前:执行后:存储过程:BEGIN DECLARE fid varchar(100) default ''; DECLARE str varchar(100000) default ''; ...
  • WITH RECURSIVE org AS ( SELECT root.* FROM dietary_food_directory root WHERE root.C_ID = '1' UNION SELECT child.* FROM dietary_food_directory child JOIN org ON org.C_ID = child.C_PARENT_ID ...
  • MySQL 递归查询

    2021-03-05 20:59:11
    但是,我记得 MySQL 是没有递归查询功能的,那 MySQL 中应该怎么实现呢? 于是,就有了这篇文章。 文章主要知识点: Oracle 递归查询, start with connect by prior 用法 find_in_set 函数 concat,concat_ws...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,710
精华内容 3,084
关键字:

mysql递归查询父节点

mysql 订阅