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 相关文章推荐
Windows10下安装MySQL8
Apr 06 MySQL
MySQL 自定义变量的概念及特点
May 13 MySQL
带你学习MySQL执行计划
May 31 MySQL
mysql 带多个条件的查询方式
Jun 05 MySQL
MySQL的安装与配置详细教程
Jun 26 MySQL
MySQL系列之八 MySQL服务器变量
Jul 02 MySQL
MyBatis 动态SQL全面详解
Oct 05 MySQL
MySQ InnoDB和MyISAM存储引擎介绍
Apr 26 MySQL
mysql查找连续出现n次以上的数字
May 11 MySQL
深入理解MySQL中MVCC与BufferPool缓存机制
May 25 MySQL
mysql幻读详解实例以及解决办法
Jun 16 MySQL
MySQL数据库查询之多表查询总结
Aug 05 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写的带缓存数据功能的mysqli类
2012/09/06 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
PHP实现的各类hash算法长度及性能测试实例
2017/08/27 PHP
JavaScript中:表达式和语句的区别[译]
2012/09/17 Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
2014/05/04 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
JavaScript使用小插件实现倒计时的方法讲解
2019/03/11 Javascript
vue实现PC端录音功能的实例代码
2019/06/05 Javascript
vue基础知识--axios合并请求和slot
2020/06/04 Javascript
vue Cli 环境删除与重装教程 - 版本文档
2020/09/11 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
粗略分析Python中的内存泄漏
2015/04/23 Python
Python实现的最近最少使用算法
2015/07/10 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
2018/09/03 Python
python进程和线程用法知识点总结
2019/05/28 Python
Pandas中DataFrame的分组/分割/合并的实现
2019/07/16 Python
django与vue的完美结合_实现前后端的分离开发之后在整合的方法
2019/08/12 Python
python基于property()函数定义属性
2020/01/22 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
python实现滑雪者小游戏
2020/02/22 Python
基于django 的orm中非主键自增的实现方式
2020/05/18 Python
python网络爬虫实现发送短信验证码的方法
2021/02/25 Python
使用css实现android系统的loading加载动画
2019/07/25 HTML / CSS
html5-Canvas可以在web中绘制各种图形
2012/12/26 HTML / CSS
LightInTheBox西班牙站点:全球商品在线采购
2016/09/22 全球购物
为什么要优先使用同步代码块而不是同步方法?
2013/01/30 面试题
为什么UNION ALL比UNION快
2016/03/17 面试题
Python文件操作的面试题
2013/06/22 面试题
迟到检讨书900字
2014/01/14 职场文书
2014年党务公开实施方案
2014/02/27 职场文书
给学校的建议书范文
2014/05/15 职场文书
检察院起诉意见书
2015/05/20 职场文书
简爱电影观后感
2015/06/10 职场文书
python 逐步回归算法
2021/04/06 Python
nginx从安装到配置详细说明(安装,安全配置,防盗链,动静分离,配置 HTTPS,性能优化)
2022/02/12 Servers
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers