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之PXC集群搭建的方法步骤
May 25 MySQL
MySQL中distinct与group by之间的性能进行比较
May 26 MySQL
MySQL如何使用使用Xtrabackup进行备份和恢复
Jun 21 MySQL
如何搭建 MySQL 高可用高性能集群
Jun 21 MySQL
MySQL系列之十三 MySQL的复制
Jul 02 MySQL
Mysql分库分表之后主键处理的几种方法
Feb 15 MySQL
MySQL中IO问题的深入分析与优化
Apr 02 MySQL
MySQL数据库事务的四大特性
Apr 20 MySQL
MySQL表字段数量限制及行大小限制详情
Jul 23 MySQL
mysql函数之截取字符串的实现
Aug 14 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生成百度sitemap站点地图类函数实例
2014/10/17 PHP
PHP超全局数组(Superglobals)介绍
2015/07/01 PHP
PHP实现生成数据字典功能示例
2018/05/24 PHP
PHP fclose函数用法总结
2019/02/15 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
BootStrap的table表头固定tbody滚动的实例代码
2016/08/24 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
2016/10/28 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
详细分析单线程JS执行问题
2017/11/22 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python实现从脚本里运行scrapy的方法
2015/04/07 Python
用Python写一个自动木马程序
2019/09/17 Python
简单了解pytest测试框架setup和tearDown
2020/04/14 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
HTML5的革新 结构之美
2011/06/20 HTML / CSS
美国男女折扣服饰百货连锁店:Stein Mart
2017/05/02 全球购物
Java面试题汇总
2015/12/06 面试题
党员个人思想汇报
2013/12/28 职场文书
八一演出活动方案
2014/02/03 职场文书
会计专业毕业自荐书范文
2014/02/08 职场文书
英文推荐信格式范文
2014/05/09 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
个人工作总结(管理人员)范文
2019/08/13 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
php实现自动生成验证码的实例讲解
2021/11/17 PHP