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 相关文章推荐
left join、inner join、right join的区别
Apr 05 MySQL
MySQL 分页查询的优化技巧
May 12 MySQL
mysql在项目中怎么选事务隔离级别
May 25 MySQL
解决mysql模糊查询索引失效问题的几种方法
Jun 18 MySQL
Unity连接MySQL并读取表格数据的实现代码
Jun 20 MySQL
详解MySql中InnoDB存储引擎中的各种锁
Feb 12 MySQL
mysql下的max_allowed_packet参数设置详解
Feb 12 MySQL
Mysql外键约束的创建与删除的使用
Mar 03 MySQL
MySQL三种方式实现递归查询
Apr 18 MySQL
提高系统的吞吐量解决数据库重复写入问题
Apr 23 MySQL
Mysql数据库group by原理详解
Jul 07 MySQL
MySQL中LAG()函数和LEAD()函数的使用
Aug 14 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实现mysql同步的实现方法
2009/10/21 PHP
php定义一个参数带有默认值的函数实例分析
2015/03/16 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
PHP中list()函数用法实例简析
2016/01/08 PHP
PHP函数shuffle()取数组若干个随机元素的方法分析
2016/04/02 PHP
php和redis实现秒杀活动的流程
2019/07/17 PHP
javascript下数值型比较难点说明
2010/06/07 Javascript
jQuery UI AutoComplete 使用说明
2011/06/20 Javascript
jquery实现的动态回到顶部特效代码
2015/10/28 Javascript
基于Javascript实现二级联动菜单效果
2016/03/04 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
2016/06/12 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
JavaScript函数柯里化原理与用法分析
2017/03/31 Javascript
javascript防篡改对象实例详解
2017/04/10 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
Angular5集成eventbus的示例代码
2018/07/19 Javascript
JS模拟浏览器实现全局搜索功能
2019/09/11 Javascript
如何管理Vue中的缓存页面
2021/02/06 Vue.js
[20:30]职业巡回赛回顾
2018/08/09 DOTA
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
在Python中处理时间之clock()方法的使用
2015/05/22 Python
Python计算三维矢量幅度的方法
2015/06/15 Python
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
Python语言生成水仙花数代码示例
2017/12/18 Python
python如何求圆的面积
2020/07/01 Python
使用python-cv2实现Harr+Adaboost人脸识别的示例
2020/10/27 Python
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
html5使用canvas实现弹幕功能示例
2017/09/11 HTML / CSS
新西兰优惠网站:Treat Me
2019/07/04 全球购物
俄罗斯宠物用品网上商店:ZooMag
2019/12/12 全球购物
创新型城市实施方案
2014/03/06 职场文书
委托书样本
2014/04/02 职场文书
奥巴马就职演讲稿
2014/05/15 职场文书
导游词之丽江普济寺
2019/10/22 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server