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 函数调用优化
Apr 07 MySQL
MySQL 常见存储引擎的优劣
Jun 02 MySQL
你知道哪几种MYSQL的连接查询
Jun 03 MySQL
MySQL GRANT用户授权的实现
Jun 18 MySQL
mysql 数据插入优化方法之concurrent_insert
Jul 01 MySQL
MySQL索引是啥?不懂就问
Jul 21 MySQL
MySQL8.0的WITH查询详情
Aug 30 MySQL
MySQL修炼之联结与集合浅析
Oct 05 MySQL
MySQL慢查询优化解决问题
Mar 17 MySQL
为什么MySQL不建议使用SELECT *
Apr 03 MySQL
MySQL数据库如何使用Shell进行连接
Apr 12 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
DOTA2游戏同人动画《龙之血》导演接受采访
2021/03/05 欧美动漫
thinkPHP实现瀑布流的方法
2014/11/29 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
Laravel 实现数据软删除功能
2019/08/21 PHP
取键盘键位ASCII码的网页
2007/07/30 Javascript
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
jquery $.ajax相关用法分享
2012/03/16 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
JavaScript知识点整理
2015/12/09 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
使用nodejs+express实现简单的文件上传功能
2017/12/27 NodeJs
node.js中fs文件系统目录操作与文件信息操作
2018/02/24 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
LayUI数据接口返回实体封装的例子
2019/09/12 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
vue 解决provide和inject响应的问题
2020/11/12 Javascript
[03:30]DOTA2完美“圣”典精彩集锦
2016/12/27 DOTA
[01:32]TI奖金增速竟因它再创新高!DOTA2勇士令状不朽珍藏Ⅰ饰品欣赏
2018/05/18 DOTA
[00:17]天涯墨客一技能展示
2018/08/25 DOTA
Python使用numpy模块创建数组操作示例
2018/06/20 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
对python中assert、isinstance的用法详解
2019/11/27 Python
pytorch 图像预处理之减去均值,除以方差的实例
2020/01/02 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
初级Java程序员面试题
2016/03/03 面试题
自我鉴定的范文
2013/10/03 职场文书
学期研究性学习个人的自我评价
2014/01/09 职场文书
小学亲子活动总结
2014/07/01 职场文书
会计实训报告范文
2014/11/04 职场文书
语文复习计划
2015/01/19 职场文书
公文格式,规则明细(新手收藏)
2019/07/23 职场文书
CSS中float高度塌陷问题的四种解决方案
2022/04/18 HTML / CSS