+----+----------+--------------+
| ID | ParentID | name         |
+----+----------+--------------+
|  1 |        0 | 河南省       |
|  2 |        1 | 信阳市       |
|  3 |        2 | 淮滨县       |
|  4 |        3 | 芦集乡       |
|  5 |        1 | 安阳市       |
|  6 |        5 | 滑县         |
|  7 |        6 | 老庙乡       |
|  8 |        2 | 固始县       |
|  9 |        8 | 李店乡       |
| 10 |        2 | 息县         |
| 11 |       10 | 关店乡       |
| 12 |        3 | 邓湾乡       |
| 13 |        3 | 台头乡       |
| 14 |        3 | 谷堆乡       |
| 15 |        1 | 南阳市       |
| 16 |       15 | 方城县       |
| 17 |        1 | 驻马店市     |
| 18 |       17 | 正阳县       |
+----+----------+--------------+

由下而上

sql:

with recursive r as
(
select * from c where id =11
union all
select c.* from c,r where c.id=r.ParentID
) select * from r order by id;

result:

+------+----------+-----------+
| ID   | ParentID | name      |
+------+----------+-----------+
|    1 |        0 | 河南省    |
|    2 |        1 | 信阳市    |
|   10 |        2 | 息县      |
|   11 |       10 | 关店乡    |
+------+----------+-----------+

由上而下

sql:

with recursive r as
(
select id,name from c where id=1
union all
select c.id,CONCAT(r.name, '>', c.name) as name from c,r where r.id = c.ParentID
)select id,name from r;

result:

+------+-----------------------------------------+
| id   | name                                    |
+------+-----------------------------------------+
|    1 | 河南省                                  |
|    2 | 河南省>信阳市                           |
|    5 | 河南省>安阳市                           |
|   15 | 河南省>南阳市                           |
|   17 | 河南省>驻马店市                         |
|    3 | 河南省>信阳市>淮滨县                    |
|    6 | 河南省>安阳市>滑县                      |
|    8 | 河南省>信阳市>固始县                    |
|   10 | 河南省>信阳市>息县                      |
|   16 | 河南省>南阳市>方城县                    |
|   18 | 河南省>驻马店市>正阳县                  |
|    4 | 河南省>信阳市>淮滨县>芦集乡             |
|    7 | 河南省>安阳市>滑县>老庙乡               |
|    9 | 河南省>信阳市>固始县>李店乡             |
|   11 | 河南省>信阳市>息县>关店乡               |
|   12 | 河南省>信阳市>淮滨县>邓湾乡             |
|   13 | 河南省>信阳市>淮滨县>台头乡             |
|   14 | 河南省>信阳市>淮滨县>谷堆乡             |
+------+-----------------------------------------+

mysql8.0CTE实现递归查询的更多相关文章

  1. MySQL递归查询

    MySQL8.0已经支持CTE递归查询,举例说明 CREATE TABLE EMP (EMPNO integer NOT NULL, ENAME ), JOB ), MGR integer, HIRE ...

  2. Mysql8.0新特性【详细版本】

    1.  账户与安全 用户创建与授权 之前:创建用户并授权 1 grant all privileges on *.* to 'myuser'@'%' identified by '3edc#EDC'; ...

  3. MSSQLServer中组织或分类表的设计及其递归查询

    开篇:项目中用到上下级从属关系的太多太多了,如:组织.分类.行政区域,这里不再一一介绍,遇到这种的如何去进行数据库表的设计及其应用的,个人对往期项目中所涉及到的进行了一些总结. 数据库表设计:表字段一 ...

  4. CTE 递归查询

    使用CTE进行递归查询,能够实现对层次结构的数据的快速访问,非常有用. TSql CTE 递归原理探究 TSql 分层和递归查询 1,CTE的递归结构 递归查询的结构包括两部分:起始点和迭代公式. 使 ...

  5. 【转载】Oracle递归查询:使用prior实现树操作【本文出自叶德华博客】

    本文标题:Oracle递归查询:使用prior实现树操作 本文链接:http://yedward.net/?id=41 本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处. Oracle ...

  6. 【2016-11-7】【坚持学习】【Day22】【Oracle 递归查询】

    直接在oracle 递归查询语句 select * from groups start with id=:DeptId connect by prior superiorid =id 往下找 sele ...

  7. c3p0数据源的使用初步及Mysql8小时问题解决

    原文:http://blog.csdn.net/xby1993/article/details/23707775 c3p0号称是java界最好的数据池. c3p0的配置方式分为三种,分别是 1.set ...

  8. mysql 递归查询

    1.创建表: DROP TABLE IF EXISTS `t_areainfo`; CREATE TABLE `t_areainfo` ( `id` ) ' AUTO_INCREMENT, `) ', ...

  9. Start with connect by prior 递归查询

    在SELECT命令中使用CONNECT BY和START WITH子句可以查询表中的树型结构关系.其命令格式如下: SELECT * from CONNECT BY {PRIOR列名1=列名2|列名1 ...

随机推荐

  1. 20145215《网络对抗》Exp7 网络欺诈技术防范

    20145215<网络对抗>Exp7 网络欺诈技术防范 基础问题回答 通常在什么场景下容易受到DNS spoof攻击? 在同一局域网下比较容易受到DNS spoof攻击,攻击者可以冒充域名 ...

  2. 使用LTP套件对Linux系统进行压力测试

    使用LTP套件对Linux系统进行压力测试 https://www.ubuntukylin.com/ukylin/forum.php?mod=viewthread&tid=6764 https ...

  3. P2034 选择数字

    P2034 选择数字 题目描述 给定一行n个非负整数a[1]..a[n].现在你可以选择其中若干个数,但不能有超过k个连续的数字被选择.你的任务是使得选出的数字的和最大. 错误日志: longlong ...

  4. POJ 2247 Humble Numbers

    A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, ...

  5. 八、IIC 接口

    8.1 IIC接口介绍 8.1.1 IIC 总线的概念 I2C总线是由Philips公司开发的一种简单.双向二线制同步串行总线.它只需要两根线即可在连接于总线上的器件之间传送信息. 主器件用于启动总线 ...

  6. u-boot移植(五)---代码修改---时钟修改、SDRAM

    最开始已经建立了新单板以及配置文件,现在就需要做的是代码的修改,配置成适合目标板使用的u-boot. 一.时钟修改 在代码流程分析中,我们知道,系统的启动是: 设置 CPU 为管理员模式 关闭看门狗 ...

  7. tensorflow实现mnist

    import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data # 在变量的构建时,通过trunc ...

  8. 顺序列表(栈/队列等)ADT[C++]

    #include<iostream> using namespace std; //ADT template<class T> class SeqList{ public: / ...

  9. 离线安装IDEA插件

    1.idea插件官网http://plugins.jetbrains.com/idea 搜索并下载对应的插件的zip包 2.打开软件进行离线安装 IDEA-->Setting-->Plug ...

  10. mysql 原理 ~ 二阶段提交协议通说

    一 简介: 今天是第二篇,讲解的是mysql的事务日志 二 具体 1 WAL技术(先写日志,再写磁盘) 2 binlog redolog 二阶段提交协议     目的 保持 redo log和binl ...