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 05 MySQL
分析mysql中一条SQL查询语句是如何执行的
Jun 21 MySQL
Mysql中调试存储过程最简单的方法
Jun 30 MySQL
SQL实现LeetCode(176.第二高薪水)
Aug 04 MySQL
MySQL中几种插入和批量语句实例详解
Sep 14 MySQL
一文弄懂MySQL索引创建原则
Feb 28 MySQL
浅谈MySQL中的六种日志
Mar 23 MySQL
mysql使用FIND_IN_SET和group_concat两个方法查询上下级机构
Apr 20 MySQL
MySQL查询日期时间
May 15 MySQL
MySQL慢查询中的commit慢和binlog中慢事务的区别
Jun 16 MySQL
MySQL远程无法连接的一些常见原因总结
Sep 23 MySQL
MySQL使用IF语句及用case语句对条件并结果进行判断 
Sep 23 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源码之 ext/mysql扩展部分
2009/07/17 PHP
PHP下对数组进行排序的函数
2010/08/08 PHP
php分页代码学习示例分享
2014/02/20 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
js计算精度问题小结
2013/04/22 Javascript
js检测网络是否具体连接功能的代码
2014/05/23 Javascript
JS使用ajax从xml文件动态获取数据显示的方法
2015/03/24 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
nodejs使用express创建一个简单web应用
2017/03/31 NodeJs
Js实现中国公民身份证号码有效性验证实例代码
2017/05/03 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
JS实现判断图片是否加载完成的方法分析
2018/07/31 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
vue实现可视化可拖放的自定义表单的示例代码
2019/03/20 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
解决vue组件中click事件失效的问题
2019/11/09 Javascript
详解Django中的ifequal和ifnotequal标签使用
2015/07/16 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
Python基于列表模拟堆栈和队列功能示例
2018/01/05 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
Django+JS 实现点击头像即可更改头像的方法示例
2018/12/26 Python
Python实现九宫格式的朋友圈功能内附“马云”朋友圈
2019/05/07 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
Python爬虫:将headers请求头字符串转为字典的方法
2019/08/21 Python
DJango的创建和使用详解(默认数据库sqlite3)
2019/11/18 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
python属于哪种语言
2020/08/16 Python
详解Python中第三方库Faker
2020/09/25 Python
size?丹麦官网:英国伦敦的球鞋精品店
2019/04/15 全球购物
护士辞职信范文
2014/01/19 职场文书
农业局学习党的群众路线教育实践活动心得体会
2014/03/07 职场文书
小学优秀班主任材料
2014/12/17 职场文书
解决thinkphp6(tp6)在状态码500下不报错,或者显示错误“Malformed UTF-8 characters”的问题
2021/04/01 PHP