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 Innodb关键特性之插入缓冲(insert buffer)
Apr 08 MySQL
MySQL之高可用集群部署及故障切换实现
Apr 22 MySQL
MYSQL主从数据库同步备份配置的方法
May 26 MySQL
MySQL索引失效的典型案例
Jun 05 MySQL
MySQL单表千万级数据处理的思路分享
Jun 05 MySQL
MySQL 5.7常见数据类型
Jul 15 MySQL
Mysql多层子查询示例代码(收藏夹案例)
Mar 31 MySQL
Mysql 8.x 创建用户以及授予权限的操作记录
Apr 18 MySQL
MySQL数据库 安全管理
May 06 MySQL
MySQL脏读,幻读和不可重复读
May 11 MySQL
MySQL 自动填充 create_time 和 update_time
May 20 MySQL
Mysql中mvcc各场景理解应用
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 变量的定义方法
2010/01/26 PHP
php基于Snoopy解析网页html的方法
2015/07/09 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
Yii2 rbac权限控制之rule教程详解
2016/06/23 PHP
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
PHP 命名空间和自动加载原理与用法实例分析
2020/04/29 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
js 发个判断字符串是否为符合标准的函数
2009/04/27 Javascript
js改变img标签的src属性在IE下没反应的解决方法
2013/07/23 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
Nodejs极简入门教程(三):进程
2014/10/27 NodeJs
JavaScript高级程序设计(第三版)学习笔记1~5章
2016/03/11 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
JS实现倒计时(天数、时、分、秒)
2016/11/16 Javascript
微信小程序 textarea 组件详解及简单实例
2017/01/10 Javascript
vue如何集成raphael.js中国地图的方法示例
2017/08/15 Javascript
Vue实现自定义下拉菜单功能
2018/07/16 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
2018/08/30 Javascript
WebGL three.js学习笔记之阴影与实现物体的动画效果
2019/04/25 Javascript
vue element upload组件 file-list的动态绑定实现
2019/10/11 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
如何在vue中使用video.js播放m3u8格式的视频
2021/02/01 Vue.js
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
基于Python的身份证号码自动生成程序
2014/08/15 Python
wxPython使用系统剪切板的方法
2015/06/16 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
用python写爬虫简单吗
2020/07/28 Python
html5实现移动端适配完美写法
2017/11/16 HTML / CSS
双十佳事迹材料
2014/01/29 职场文书
工程专业求职自荐书范文
2014/02/08 职场文书
暑期社会实践心得体会
2014/09/02 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
2015年实习生工作总结报告
2015/04/28 职场文书
「女孩的钓鱼慢活」全新版权绘公布
2022/03/21 日漫