mysql 树形结构查询(存储过程)_MySQL

php中文网
发布: 2016-06-01 14:01:39
原创
1523人浏览过

就用数据数据库表地址数据(中国地区) 来说吧(用Windows 请使用 gbk !!)

  可直接运行(去除注解)

  存储过程:

DELIMITER//
dropprocedureifexists findLChild//
/*iid递归父节点,layer允许递归深度*/
CREATEPROCEDUREfindLChild(iidbigint(20),layerbigint(20))
 BEGIN
  /*创建接受查询的临时表*/
  createtemporary tableifnotexiststmp_table(idbigint(20),namevarchar(50))ENGINE=InnoDBDEFAULTCHARSET=utf8;
  /*最高允许递归数*/
  SET@@max_sp_recursion_depth=99;
  calliterative(iid,layer);/*核心数据收集*/
  select*fromtmp_table;/*展现*/
  droptemporary tableif exists tmp_table;/*删除临时表*/
  END;//
DELIMITER;
DELIMITER//
dropprocedureifexists iterative//
CREATEPROCEDUREiterative(iidbigint(20),layerbigint(20))
  BEGIN
    declaretidbigint(20)default-1;
    declaretnamevarchar(50)charactersetutf8;
    /*游标定义*/
    declarecur1CURSORFORselectid,namefromlocationwherefid=iid;
    declareCONTINUEHANDLERFORSQLSTATE'02000'SETtid=null;
   
   /*允许递归深度*/
   iflayer>0then
    OPENcur1;
    FETCHcur1INTOtid,tname;
     WHILE(tidisnotnull)
      DO
       /*核心数据收集*/
     insertintotmp_tablevalues(tid,tname);
       calliterative(tid,layer-1);
       FETCHcur1INTOtid,tname;
     ENDWHILE;
   endif;
  END;//
DELIMITER;

  //运行!!

mysql> call findLChild(1,1);
+------+------------------+
| id  | name       |
+------+------------------+
|  2 | 北京       |
|  4 | 上海       |
|  6 | 香港特别行政区  |
|  8 | 澳门特别行政区  |
|  10 | 河北       |
|  23 | 山西       |
|  35 | 辽宁       |
|  50 | 吉林       |
|  60 | 黑龙江      |
|  74 | 江苏       |
|  88 | 浙江       |
| 101 | 安徽       |
| 119 | 福建       |
| 129 | 江西       |
| 142 | 山东       |
| 160 | 河南       |
| 179 | 湖北       |
| 198 | 湖南       |
| 213 | 广东       |
| 235 | 甘肃       |
| 250 | 四川       |
| 272 | 贵州       |
| 282 | 海南       |
| 301 | 云南       |
| 318 | 青海       |
| 327 | 陕西       |
| 348 | 广西壮族自治区  |
| 363 | 西藏自治区    |
| 371 | 宁夏回族自治区  |
| 377 | 新疆维吾尔自治区 |
| 400 | 内蒙古自治区   |
| 413 | 台湾省      |
+------+------------------+
32 rows in set (0.02 sec)

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
相关标签:
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号