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));

  • 相关阅读:
    JQuery新浪1630个表情插件
    时间轴Jquery特效
    微博分享Jquery插件
    分享一款解析json数据包获取全国学校Jquery特效
    视频播放插件
    如何将word中的数据导入到数据库中
    在留资格到了
    090310 晴
    090306 雨
    胃的保养
  • 原文地址:https://www.cnblogs.com/ThisYbc/p/15064381.html
Copyright © 2011-2022 走看看