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创建索引需要了解的
Apr 08 MySQL
MySQL 数据丢失排查案例
May 08 MySQL
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
May 25 MySQL
正确使用MySQL INSERT INTO语句
May 26 MySQL
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
Jun 26 MySQL
MySQL 5.7常见数据类型
Jul 15 MySQL
一文带你探究MySQL中的NULL
Nov 11 MySQL
分析MySQL优化 index merge 后引起的死锁
Apr 19 MySQL
MySQL 自动填充 create_time 和 update_time
May 20 MySQL
详解Mysql数据库平滑扩容解决高并发和大数据量问题
May 25 MySQL
MySQL数据库表约束讲解
Jun 21 MySQL
MySQL 原理与优化之Update 优化
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
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
使用PHP接受文件并获得其后缀名的方法
2015/08/05 PHP
PHP上传Excel文件导入数据到MySQL数据库示例
2016/10/25 PHP
Javascript中的数学函数
2007/04/04 Javascript
js模拟弹出效果代码修正版
2008/08/07 Javascript
input、button的不同type值在ajax提交表单时导致的陷阱
2009/02/24 Javascript
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
javascript设计模式之策略模式学习笔记
2017/02/15 Javascript
解析jquery easyui tree异步加载子节点问题
2017/03/08 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
vue移动端项目缓存问题实践记录
2018/10/29 Javascript
使用jQuery动态设置单选框的选中效果
2018/12/06 jQuery
微信小程序之几种常见的弹框提示信息实现详解
2019/07/11 Javascript
js获取浏览器地址(获取第1个斜杠后的内容)
2019/09/03 Javascript
vue-cli3.X快速创建项目的方法步骤
2019/11/14 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
Vue基本指令实例图文讲解
2021/02/25 Vue.js
[02:03]永远的信仰DOTA2 中国军团历届国际邀请赛回顾
2016/06/26 DOTA
[37:02]OG vs INfamous 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python+Django实现防止SQL注入的办法
2019/10/31 Python
Python内置函数locals和globals对比
2020/04/28 Python
Python如何测试stdout输出
2020/08/10 Python
pytorch Dataset,DataLoader产生自定义的训练数据案例
2021/03/03 Python
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
极简鞋类,赤脚的感觉:Lems Shoes
2019/08/06 全球购物
理货员的岗位职责
2013/11/23 职场文书
部队学习十八大感言
2014/01/11 职场文书
市政工程技术专业自荐书
2014/07/06 职场文书
男方婚礼答谢词
2015/01/20 职场文书
承诺书模板大全
2015/05/04 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
2016教师暑期培训学习心得体会
2016/01/09 职场文书
2019年汽车租赁合同范本!
2019/08/12 职场文书
多人盗宝《绿林侠盗》第三赛季4.5上线 跨平台实装
2022/04/03 其他游戏
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers