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 相关文章推荐
MySQL8.0.24版本Release Note的一些改进点
Apr 22 MySQL
MySQL中distinct和count(*)的使用方法比较
May 26 MySQL
Navicat for MySQL的使用教程详解
May 27 MySQL
MySQL 常见存储引擎的优劣
Jun 02 MySQL
详细谈谈MYSQL中的COLLATE是什么
Jun 11 MySQL
Mysql8.0递归查询的简单用法示例
Aug 04 MySQL
关于MySQL中的 like操作符详情
Nov 17 MySQL
MySQL数据库⾼可⽤HA实现小结
Jan 22 MySQL
一条慢SQL语句引发的改造之路
Mar 16 MySQL
分享几个简单MySQL优化小妙招
Mar 31 MySQL
MySQL提升大量数据查询效率的优化神器
Jul 07 MySQL
MySQL常用慢查询分析工具详解
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 输出简单动态WAP页面
2009/06/09 PHP
PHP 面向对象详解
2012/09/13 PHP
php实现Session存储到Redis
2015/11/11 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
详解PHP归并排序的实现
2016/10/18 PHP
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
jquery 获取select数组与name数组长度的实现代码
2016/06/20 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
JavaScript简单生成 N~M 之间随机数的方法
2017/01/13 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
vue同步父子组件和异步父子组件的生命周期顺序问题
2018/10/07 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
JS实现的全选、全不选及反选功能【案例】
2019/02/19 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
Vue使用Element实现增删改查+打包的步骤
2020/11/25 Vue.js
python简单图片操作:打开\显示\保存图像方法介绍
2017/11/23 Python
Python实现PS滤镜功能之波浪特效示例
2018/01/26 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
详解python和matlab的优势与区别
2019/06/28 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
解决django的template中如果无法引用MEDIA_URL问题
2020/04/07 Python
Eclipse配置python默认头过程图解
2020/04/26 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
Pycharm无法打开双击没反应的问题及解决方案
2020/08/17 Python
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
eBay英国购物网站:eBay.co.uk
2019/06/19 全球购物
红领巾广播站广播稿(3篇)
2014/09/20 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
毕业论文致谢范文
2015/05/14 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
详解php中流行的rpc框架
2021/05/29 PHP