+----+----------+--------------+
| 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. C# TextBox猜想输入和历史记录输入

    什么是猜想输入 当我们在使用查询应用时,输入某个关键字后文本框下面就会自动弹出跟此关键字相附的词组供我们选择,为我们节省了输入的时间,这就是猜想输入,例如:百度,谷歌,等等,如下图: 如上图所示,使用 ...

  2. python爬虫-采集英语翻译

      http://fanyi.baidu.com/?aldtype=85#en/zh/drughttp://fanyi.baidu.com/?aldtype=85#en/zh/cathttp://fa ...

  3. Java Map 按Key排序和按Value排序【转】【补】

    package kingtool.sort; import java.util.ArrayList; import java.util.Collections; import java.util.Co ...

  4. linux配置java环境变量jdk jre(详细)【转】

    linux配置java环境变量(详细) 本文完全引用自: http://www.cnblogs.com/samcn/archive/2011/03/16/1986248.html 一. 解压安装jdk ...

  5. Request库学习

    0x00前言 这库让我爱上了python  碉堡! 开心去学了一些python,然后就来学这个时候神库~~ 资料来源:http://cn.python-requests.org/en/latest/u ...

  6. 为什么要用dubbo,dubbo和zookeeper关系

    为什么要用dubbo? 当网站规模达到了一定的量级的时候,普通的MVC框架已经不能满足我们的需求,于是分布式的服务框架和流动式的架构就凸显出来了.     单一应用架构 当网站流量很小时,只需一个应用 ...

  7. Docker 入门 第六部分:部署app

    目录 Docker 入门 第六部分:部署app 先决条件 介绍 选择一个选项 Docker CE(Cloud provider) Enterprise(Cloud provider)这里不做介绍 En ...

  8. ubuntu 18.04下character_set_server设置为utf8

    打开/etc/mysql/mysql.conf.d/mysql.cnf添加以下代码: character-set-server = utf8 然后重启mysql即可

  9. ping不同网站总结

    用高级设置法预防Ping 用网络防火墙阻隔Ping 启用IP安全策略防Ping IP安全机制(IP Security)即IPSec策略,用来配置IPSec安全服务.这些策略可为多数现有网络中地多数通信 ...

  10. android SQLiteOpenHelper 使用

    1.实体 package mydemo.mycom.demo2.entity; public class UserInfo { private int id; private String usern ...