zoukankan      html  css  js  c++  java
  • mysql递归

    1、向下递归

    delimiter $$ 
    drop function if exists get_child_list$$ 
    create function get_child_list(in_id varchar(100)) returns varchar(1000) 
    begin 
     declare ids varchar(1000) default ''; 
     declare tempids varchar(1000); 
     
     set tempids = in_id; 
     while tempids is not null do 
      set ids = CONCAT_WS(',',ids,tempids); 
      select GROUP_CONCAT(id) into tempids from 表名 where FIND_IN_SET(pid,tempids)>0;  
     end while; 
     return ids; 
    end  
    $$ 
    delimiter ;

    Eg:查询ID为4下面的所有节点SELECT * FROM t_areainfo WHERE FIND_IN_SET(id,get_child_list(节点ID));

    2.、向上递归

    DROP FUNCTION IF EXISTS queryChildrenAreaInfo1;DELIMITER;;
    CREATE FUNCTION queryChildrenAreaInfo1(areaId INT)
    RETURNS VARCHAR(4000)
    BEGIN
    DECLARE sTemp VARCHAR(4000);
    DECLARE sTempChd VARCHAR(4000);
    
    SET sTemp='$';
    SET sTempChd = CAST(areaId AS CHAR);
    SET sTemp = CONCAT(sTemp,',',sTempChd);
    
    SELECT parentId INTO sTempChd FROM t_areainfo WHERE id = sTempChd;
    WHILE sTempChd <> 0 DO
    SET sTemp = CONCAT(sTemp,',',sTempChd);
    SELECT parentId INTO sTempChd FROM t_areainfo WHERE id = sTempChd;
    END WHILE;
    RETURN sTemp;
    END;;DELIMITER ;

    Eg:查询ID7上面的所有节点SELECT * from t_areainfo where FIND_IN_SET(id,queryChildrenAreaInfo1(7));

  • 相关阅读:
    C#重载操作符的那点事
    Winform最小化托盘
    C#多线程传参
    GridView事件大全
    测试2
    测试
    FindFileByContent
    JavaScriptCallCSharp js调用C#属性与方法
    GroupBy
    查询指定属性的文件
  • 原文地址:https://www.cnblogs.com/ThisYbc/p/15064381.html
Copyright © 2011-2022 走看看