Mysql8.0递归查询的简单用法示例


Posted in MySQL onAugust 04, 2021

前言

本文使用Mysql8.0的特新实现递归查询,文中给出了详细的实例代码,下面话不多说了,来一起看看详细的介绍吧

Mysql8.0递归查询用法

表数据如下

+--------+----------+------------+
| cat_id | name     | parent_cid |
+--------+----------+------------+
|     12 | 美妆     |          0 |
|      4 | 服装     |          0 |
|      5 | 女装     |          4 |
|      6 | 男装     |          4 |
|      7 | 童装     |          4 |
|     19 | 美容美体 |         12 |
|     18 | 彩妆     |         12 |
|     13 | 护肤     |         12 |
|     15 | 护肤套装 |         13 |
|     40 | 防晒     |         13 |
|     39 | 卸妆     |         13 |
|     38 | 润唇膏   |         13 |
|     17 | 乳液面霜 |         13 |
|     16 | 面膜     |         13 |
|     14 | 化妆水   |         13 |
+--------+----------+------------+

1. 我们需要查询出"服装"分类下的所有子分类

with recursive type_cte as (
    select *  from t_category  where cat_id = 4
    union all
    select t.* from t_category t
                        inner join type_cte type_cte2 on t.parent_cid = type_cte2.cat_id
)
select
    cat_id, name, parent_cid
from type_cte

+--------+------+------------+
| cat_id | name | parent_cid |
+--------+------+------------+
|      4 | 服装 |          0 |
|      5 | 女装 |          4 |
|      6 | 男装 |          4 |
|      7 | 童装 |          4 |
+--------+------+------------+

2. 查询出所有“美妆”分类下的所有子分类,并且分类名称带上上级分类的名称

with recursive type_cte as (
    select cat_id,name,parent_cid  from t_category  where cat_id = 12
    union all
    select t.cat_id,concat(type_cte2.name,'>',t.name),t.parent_cid 
    from t_category t
        inner join type_cte type_cte2 on t.parent_cid = type_cte2.cat_id
)
select
    cat_id, name, parent_cid
from type_cte;

+--------+------------------------+------------+
| cat_id | name                   | parent_cid |
+--------+------------------------+------------+
|     12 | 美妆                   |          0 |
|     13 | 美妆>护肤              |         12 |
|     18 | 美妆>彩妆              |         12 |
|     19 | 美妆>美容美体          |         12 |
|     14 | 美妆>护肤>化妆水       |         13 |
|     15 | 美妆>护肤>护肤套装     |         13 |
|     16 | 美妆>护肤>面膜         |         13 |
|     17 | 美妆>护肤>乳液面霜     |         13 |
|     35 | 美妆>护肤>洁面         |         13 |
|     36 | 美妆>护肤>精华         |         13 |
|     37 | 美妆>护肤>眼霜         |         13 |
|     38 | 美妆>护肤>润唇膏       |         13 |
|     39 | 美妆>护肤>卸妆         |         13 |
|     40 | 美妆>护肤>防晒         |         13 |
+--------+------------------------+------------+

3. 查询分类的所有父级分类

根据第二个问题的sql做一下调整即可

with recursive type_cte as (
    select cat_id,name,parent_cid  from t_category  where cat_id = 40
    union all
    select t.cat_id,concat(type_cte2.name,'>',t.name),t.parent_cid
    from t_category t
             inner join type_cte type_cte2 on t.cat_id = type_cte2.parent_cid
)
select
    cat_id, name, parent_cid
from type_cte;

+--------+----------------+------------+
| cat_id | name           | parent_cid |
+--------+----------------+------------+
|     40 | 防晒           |         13 |
|     13 | 防晒>护肤      |         12 |
|     12 | 防晒>护肤>美妆 |          0 |
+--------+----------------+------------+

总结

到此这篇关于Mysql8.0递归查询的文章就介绍到这了,更多相关Mysql8.0递归查询内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

MySQL 相关文章推荐
Mysql Show Profile
Apr 05 MySQL
详解GaussDB for MySQL性能优化
May 18 MySQL
详解MySQL连接挂死的原因
May 18 MySQL
zabbix监控mysql的实例方法
Jun 02 MySQL
MySQL中in和exists区别详解
Jun 03 MySQL
mysql中between的边界,范围说明
Jun 08 MySQL
mysql 数据插入优化方法之concurrent_insert
Jul 01 MySQL
MySQL修改默认引擎和字符集详情
Sep 25 MySQL
MySQL空间数据存储及函数
Sep 25 MySQL
Windows下载并安装MySQL8.0.x 版本的完整教程
Apr 10 MySQL
sql注入报错之注入原理实例解析
Jun 10 MySQL
MySQL使用IF语句及用case语句对条件并结果进行判断 
Sep 23 MySQL
SQL之各种join小结详细讲解
SQL实现LeetCode(175.联合两表)
Aug 04 #MySQL
一篇文章带你深入了解Mysql触发器
Aug 02 #MySQL
sql注入教程之类型以及提交注入
MySQL子查询中order by不生效问题的解决方法
Aug 02 #MySQL
MySQL中utf8mb4排序规则示例
Aug 02 #MySQL
MySql子查询IN的执行和优化的实现
You might like
CI框架Session.php源码分析
2014/11/03 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
jscript之Open an Excel Spreadsheet
2007/06/13 Javascript
Javascript 强制类型转换函数
2009/05/17 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
js 固定悬浮效果实现思路代码
2013/08/02 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
2015/08/23 Javascript
CSS或者JS实现鼠标悬停显示另一元素
2016/01/22 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
如何使用Bootstrap创建表单
2017/03/29 Javascript
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
使用Vue-cli 3.0搭建Vue项目的方法
2018/06/07 Javascript
vue 本地服务不能被外部IP访问的完美解决方法
2018/10/29 Javascript
Jquery实现无缝向上循环滚动列表的特效
2019/02/13 jQuery
微信小程序云开发之云函数详解
2019/05/16 Javascript
解决vue+ element ui 表单验证有值但验证失败问题
2020/01/16 Javascript
使用js实现单链解决前端队列问题的方法
2020/02/03 Javascript
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
一个基于flask的web应用诞生 使用模板引擎和表单插件(2)
2017/04/11 Python
Python利用pandas计算多个CSV文件数据值的实例
2018/04/19 Python
python3下pygame如何实现显示中文
2020/01/11 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
html5 桌面提醒:Notifycations应用介绍
2012/11/27 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
Mytheresa美国官网:德国知名的女性奢侈品电商
2017/05/27 全球购物
Weblogic的布署方式
2013/08/23 面试题
新媒传信软件测试面试题
2013/02/24 面试题
文科毕业生自荐书范文
2014/04/17 职场文书
防沙治沙典型材料
2014/05/07 职场文书
求职信标题怎么写
2014/05/26 职场文书
2014年个人年终总结
2015/03/09 职场文书
2015年建筑工程工作总结
2015/05/13 职场文书
2016年小学教师师德承诺书
2016/03/25 职场文书
街道办残联2016年助残日活动总结
2016/04/01 职场文书
MySQL如何使用使用Xtrabackup进行备份和恢复
2021/06/21 MySQL