Home > Database > Mysql Tutorial > mysql 树形结构查询(存储过程)_MySQL

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

WBOY
Release: 2016-06-01 14:01:39
Original
1406 people have browsed it

就用数据数据库表地址数据(中国地区) 来说吧(用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)

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template