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 INSERT INTO语句
May 26 MySQL
Mysql 设置boolean类型的操作
Jun 04 MySQL
MySQL 使用索引扫描进行排序
Jun 20 MySQL
mysql联合索引的使用规则
Jun 23 MySQL
MySQL系列之十 MySQL事务隔离实现并发控制
Jul 02 MySQL
Node-Red实现MySQL数据库连接的方法
Aug 07 MySQL
一篇文章看懂MySQL主从复制与读写分离
Nov 07 MySQL
MySQL中varchar和char类型的区别
Nov 17 MySQL
你真的会用Mysql的explain吗
Mar 31 MySQL
navicat 连接Ubuntu虚拟机的mysql的操作方法
Apr 02 MySQL
mysql查找连续出现n次以上的数字
May 11 MySQL
mysql字段为NULL索引是否会失效实例详解
May 30 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中实现生成静态文件的方法缓解服务器压力
2014/01/07 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
php实现构建排除当前元素的乘积数组方法
2018/10/06 PHP
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
node.js中的querystring.escape方法使用说明
2014/12/10 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
jquery插件方式实现table查询功能的简单实例
2016/06/06 Javascript
jQuery无缝轮播图代码
2016/12/22 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
vue-cli中的webpack配置详解
2017/09/25 Javascript
微信小程序实现滚动消息通知
2018/02/02 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
js的继承方法小结(prototype、call、apply)(推荐)
2019/04/17 Javascript
[04:07]显微镜下的DOTA2第八期——英雄复活动作
2014/06/24 DOTA
[01:08:09]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#1Liquid VS Alliance第二局
2016/03/02 DOTA
Python学习思维导图(必看篇)
2017/06/26 Python
详解Python里使用正则表达式的ASCII模式
2017/11/02 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
Python csv文件记录流程代码解析
2020/07/16 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
基于Python爬取51cto博客页面信息过程解析
2020/08/25 Python
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
兰蔻加拿大官方网站:Lancome加拿大
2016/08/05 全球购物
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
Love, Bonito国际官网:新加坡女装品牌
2021/03/13 全球购物
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
公务员爱岗敬业演讲稿
2014/08/26 职场文书
委托书的写法
2014/09/16 职场文书
学校总务处领导班子民主生活会对照检查材料思想汇报
2014/09/27 职场文书
电影雷锋观后感
2015/06/10 职场文书
正确使用MySQL update语句
2021/05/26 MySQL
Python实现照片卡通化
2021/12/06 Python
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android