mariadb 10.2/mysql 8.0实现递归
借助mysql 8.0的cte(它是iso sql标准的一部分),可以实现递归,mariadb 10.2.2开始支持递归cte,如下:
+----+----------+--------------+
| 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 | 河南省>信阳市>淮滨县>谷堆乡 |
+------+-----------------------------------------+
完整原理大家可以参考https://mariadb.com/kb/en/library/recursive-common-table-expressions-overview/。
mariadb 10.2/mysql 8.0实现递归的更多相关文章
- MySQL与MariaDB核心特性比较详细版v1.0(覆盖mysql 8.0/mariadb 10.3,包括优化、功能及维护)
注:本文严禁任何形式的转载,原文使用word编写,为了大家阅读方便,提供pdf版下载. MySQL与MariaDB主要特性比较详细版v1.0(不含HA).pdf 链接:https://pan.baid ...
- MySQL 8.0有什么新功能
https://mysqlserverteam.com/whats-new-in-mysql-8-0-generally-available/ 我们自豪地宣布MySQL 8.0的一般可用性. 现在下载 ...
- 从MySQL 5.5迁移到Mariadb 10.1.14
从MySQL 5.5迁移到Mariadb 10.1.14 迁移计划如下: 1.备份MySQL 5.5的数据库,对指定库进行备份. 2.还原到Mariadb,然后建立复制. 3.然后就可以愿意啥时候切换 ...
- Cenos7 编译安装 Mariadb Nginx PHP Memcache ZendOpcache (实测 笔记 Centos 7.0 + Mariadb 10.0.15 + Nginx 1.6.2 + PHP 5.5.19)
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...
- CentOS7 编译安装 Mariadb (实测 笔记 Centos 7.0 + Mariadb 10.0.15)
环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.准备 1.1 显示系统版 ...
- SQLServer2012 和 MariaDB 10.0.3 分页效率的对比
1. 实验环境 R910服务器, 16G内存 SqlServer 2012 64bit MariaDB 10.0.3 64bit (InnoDB) 2. 实验表情况 rtlBill ...
- MariaDB——(三) MariaDB 10.0.15 standard replication主从复制搭建
最近看了一下MariaDB的常规复制章节,就按部就班的搭建了一下最简单的主从复制.需要的硬件环境很简单(在虚拟机VMware中搭建): 1:两台server:Master: 192.168.6.133 ...
- mysql 5.7/percona server/mariadb 10.2安装与服务器参数优化
建议使用percona server linux generic版,从https://www.percona.com/downloads/Percona-Server-LATEST/下载,现在不在推荐 ...
- centos6.5环境使用RPM包离线安装MariaDB 10.0.20
1. 进入MariaDB官网下载MariaDB需要的RPM包 2. 使用下载软件下载所需要的RPM包, 总共4个, 并上传到CentOS主机指定目录. MariaDB-10.0.20-centos6- ...
随机推荐
- Jmeter计数器的使用-转载
说一下jmeter中,配置元件-计数器的使用. 如果需要引用的数据量较大,且要求不能重复或者需要自增,那么可以使用计数器来实现. 1.启动jmeter,添加线程组,右键添加配置元件——计数器,如下图: ...
- sublime text3常用的一些快捷键
--------------------------------下面的内容可以打印出来贴在电脑旁提醒自己-------------------- Ctrl + Shift + D 快速复制当前的一行 ...
- UVA572 Oil Deposits DFS求解
小白书上经典DFS题目. 1. 递归实现 // from: https://www.cnblogs.com/huaszjh/p/4686092.html #include <stdio.h> ...
- Django-视图函数view
目录 1.Django的视图函数view 1.1一个简单的视图 2.CBV和FBV 3.使用Mixin(了解) 4.给视图加装饰器 4.1使用装饰器装饰FBV 4.2使用装饰器装饰CBV 5.requ ...
- 监控服务zabbix部署
目录 1. zabbix介绍 2. zabbix特点 3. zabbix配置文件 4. 部署zabbix 4.1 zabbix服务端安装 4.2 zabbix服务端配置 4.3 zabbix服务端we ...
- layui开发的一些技巧
选择人员功能 //保存选择结果,用于回调 /* window.saveSelectTeachers = function () { //1.检查用户的最终选择是什么 var rule_course_i ...
- 从客户端(content="xxxxx")中检测到有潜在危险的 Request.Form 值——较合理解决方案
1,修改配置文件: <httpRuntime requestValidationMode = "2.0" /> 以上修改是必须的,因为高版本的.netframework ...
- c++控制输出的字体颜色
SetConsoleTextAttribute(参数表).SetConsoleTextAttribute()函数是一个API设置字体颜色和背景色的函数.参数表中使用两个属性(属性之间用,隔开).Get ...
- 弹性盒模型:flex多行多列两端对齐,列不满左对齐
[1]需求: [2]解决方案: 最近遇到布局上要求item两端对齐,且最后一行在列不满的情况下要求左对齐,使用flex的justify-content: space-between;实现时发现最后一行 ...
- 《基于C/S和B/S混合结构的中职学校教务管理系统设计与实现》论文笔记(十六)
标题:基于C/S和B/S混合结构的中职学校教务管理系统设计与实现 一.基本信息 时间:2008 来源:中 国 海 洋 大 学 关键词:: 教务管理信息系统;C/S和B/S混合结构;UML;USE CA ...