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 14 MySQL
mysql在项目中怎么选事务隔离级别
May 25 MySQL
MySQL 聚合函数排序
Jul 16 MySQL
MySQL中的引号和反引号的区别与用法详解
Oct 24 MySQL
MySQL读取JSON转换的方式
Mar 18 MySQL
MySQL的存储函数与存储过程的区别解析
Apr 08 MySQL
MySQL事务操作的四大特性以及并发事务问题
Apr 12 MySQL
CentOS MySql8 远程连接实战
Apr 19 MySQL
MySQL数据库中的锁、解锁以及删除事务
May 06 MySQL
MySQL数据库 安全管理
May 06 MySQL
Mysql将字符串按照指定字符分割的正确方法
May 30 MySQL
MySQL 原理优化之Group By的优化技巧
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操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
php中namespace及use用法分析
2016/12/06 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
javascript实现window.print()去除页眉页脚
2014/12/30 Javascript
JavaScript设计模式之单体模式全面解析
2016/09/09 Javascript
利用JS判断鼠标移入元素的方向
2016/12/11 Javascript
jquery实现文字单行横移或翻转(上下、左右跳转)
2017/01/08 Javascript
javascript基础进阶_深入剖析执行环境及作用域链
2017/09/05 Javascript
小程序二次贝塞尔曲线实现购物车商品曲线飞入效果
2019/01/07 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
python 中文字符串的处理实现代码
2009/10/25 Python
python3调用R的示例代码
2018/02/23 Python
Python 给某个文件名添加时间戳的方法
2018/10/16 Python
Python实现将Excel转换成为image的方法
2018/10/23 Python
pyqt5之将textBrowser的内容写入txt文档的方法
2019/06/21 Python
python使用 zip 同时迭代多个序列示例
2019/07/06 Python
解决Tensorflow 使用时cpu编译不支持警告的问题
2020/02/03 Python
Python使用requests模块爬取百度翻译
2020/08/25 Python
css3遮罩层镂空效果的多种实现方法
2020/05/11 HTML / CSS
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
Bjorn Borg官方网上商店:国际运动时尚品牌
2016/08/27 全球购物
英国简约舒适女装品牌:Great Plains
2018/07/27 全球购物
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
委托书样本
2014/04/02 职场文书
法制宣传月活动总结
2014/04/29 职场文书
煤矿安全演讲稿
2014/05/09 职场文书
大学生思想道德自我评价
2015/03/09 职场文书
活动新闻稿范文
2015/07/17 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
Nginx下配置Https证书详细过程
2021/04/01 Servers
Nginx配置根据url参数重定向
2022/04/11 Servers