mysql8.0CTE实现递归查询
+----+----------+--------------+
| 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实现递归查询的更多相关文章
- MySQL递归查询
MySQL8.0已经支持CTE递归查询,举例说明 CREATE TABLE EMP (EMPNO integer NOT NULL, ENAME ), JOB ), MGR integer, HIRE ...
- Mysql8.0新特性【详细版本】
1. 账户与安全 用户创建与授权 之前:创建用户并授权 1 grant all privileges on *.* to 'myuser'@'%' identified by '3edc#EDC'; ...
- MSSQLServer中组织或分类表的设计及其递归查询
开篇:项目中用到上下级从属关系的太多太多了,如:组织.分类.行政区域,这里不再一一介绍,遇到这种的如何去进行数据库表的设计及其应用的,个人对往期项目中所涉及到的进行了一些总结. 数据库表设计:表字段一 ...
- CTE 递归查询
使用CTE进行递归查询,能够实现对层次结构的数据的快速访问,非常有用. TSql CTE 递归原理探究 TSql 分层和递归查询 1,CTE的递归结构 递归查询的结构包括两部分:起始点和迭代公式. 使 ...
- 【转载】Oracle递归查询:使用prior实现树操作【本文出自叶德华博客】
本文标题:Oracle递归查询:使用prior实现树操作 本文链接:http://yedward.net/?id=41 本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处. Oracle ...
- 【2016-11-7】【坚持学习】【Day22】【Oracle 递归查询】
直接在oracle 递归查询语句 select * from groups start with id=:DeptId connect by prior superiorid =id 往下找 sele ...
- c3p0数据源的使用初步及Mysql8小时问题解决
原文:http://blog.csdn.net/xby1993/article/details/23707775 c3p0号称是java界最好的数据池. c3p0的配置方式分为三种,分别是 1.set ...
- mysql 递归查询
1.创建表: DROP TABLE IF EXISTS `t_areainfo`; CREATE TABLE `t_areainfo` ( `id` ) ' AUTO_INCREMENT, `) ', ...
- Start with connect by prior 递归查询
在SELECT命令中使用CONNECT BY和START WITH子句可以查询表中的树型结构关系.其命令格式如下: SELECT * from CONNECT BY {PRIOR列名1=列名2|列名1 ...
随机推荐
- X-UA-compatible浅谈
最近了解到svg,原来它出现之前好几年,微软已经推出了vml,但是那时候却被人吐槽无数,看来过早的创新也是失败的原因之一呢~ 为什么谈到这个话题呢?因为IE史上有一个特别奇怪的浏览器IE8,它及不兼容 ...
- sklearn10-使用总结
sklearn实战-乳腺癌细胞数据挖掘(博主亲自录制视频) https://study.163.com/course/introduction.htm?courseId=1005269003& ...
- 多播委托和匿名方法再加上Lambda表达式
多播委托就是好几个方法全都委托给一个委托变量 代码: namespace 委托 { class Program { static void math1() { Console.WriteLine(&q ...
- vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询
vue使用element Transfer 穿梭框实现ajax请求数据和自定义查询 基于element Transfer http://element-cn.eleme.io/#/zh-CN/comp ...
- java查看当前项目所有线程列表界面【转】
java查看当前项目所有线程列表界面 1.TestThread(测试类) package com.testdemo.pcis.isc.job.king.panel; public class Test ...
- SQL语句(二)创建带主键和约束的数据表
内容摘要 创建带主键和约束的表 创建带组合主键和外键的表 1. 创建带主键和约束的表 Student (学生表) CREATE TABLE Student ( sclass ) NOT NULL, - ...
- IDAPython安装
转载:All Right (本人没有测试过) 关于IDAPython的安装教程网上的资料非常少,也不是很详细,我费了好长时间才装好,现在和大家分享一下. 注意事项 下面几点关系到安装是否成功 ID ...
- android 生成、pull解析xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...
- Error: Cannot find module PhantomJS
node install.js Considering PhantomJS found at /usr/local/bin/phantomjs Looks like an `npm install - ...
- servlet相关
servlet是在服务器端运行的一个小程序.一个servlet就是一个java类,并且可以通过“请求-响应”编程模型来访问的这个驻留在服务器内存里的servlet程序. 1.生命周期 2.内置对象 r ...