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大小写敏感的注意事项
May 24 MySQL
MySQL数据库超时设置配置的方法实例
Oct 15 MySQL
Mysql数据库手动及定时备份步骤
Nov 07 MySQL
mysql5.7的安装及Navicate长久免费使用的实现过程
Nov 17 MySQL
VS2019连接MySQL数据库的过程及常见问题总结
Nov 27 MySQL
如何避免mysql启动时错误及sock文件作用分析
Jan 22 MySQL
SQL注入篇学习之盲注/宽字节注入
Mar 03 MySQL
MySQL优化及索引解析
Mar 17 MySQL
你真的会用Mysql的explain吗
Mar 31 MySQL
提高系统的吞吐量解决数据库重复写入问题
Apr 23 MySQL
讲解MySQL增删改操作
May 06 MySQL
mysql 体系结构和存储引擎介绍
May 06 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
PHP 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
详解PHP匿名函数与注意事项
2016/03/29 PHP
PHP压缩图片功能的介绍
2019/03/21 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
利用js编写网页进度条效果
2017/10/08 Javascript
详解新手使用vue-router传参时注意事项
2019/06/06 Javascript
通过javascript实现段落的收缩与展开
2019/06/26 Javascript
[01:33:59]真人秀《加油 DOTA》 第六期
2014/09/09 DOTA
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
[48:29]2018DOTA2亚洲邀请赛3月30日 小组赛A组 LGD VS KG
2018/03/31 DOTA
wxPython学习之主框架实例
2014/09/28 Python
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
Python 常用string函数详解
2016/05/30 Python
在Python中使用gRPC的方法示例
2018/08/08 Python
python递归实现快速排序
2018/08/18 Python
Python socket实现的简单通信功能示例
2018/08/21 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
使用Matplotlib 绘制精美的数学图形例子
2019/12/13 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
学习之星事迹材料
2014/05/17 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
六查六看六改心得体会
2014/10/14 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
父亲节活动总结
2015/02/12 职场文书
护士辞职信怎么写
2015/02/27 职场文书
参加招聘会后的感想
2015/08/10 职场文书
2016年春节慰问信息大全
2015/11/30 职场文书
2016大学生优秀志愿者事迹材料
2016/02/25 职场文书
职场领导同事生日简短祝福语
2019/08/06 职场文书
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
2021/04/06 Python
springboot利用redis、Redisson处理并发问题的操作
2021/06/18 Java/Android
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js