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 相关文章推荐
多表查询、事务、DCL
Apr 05 MySQL
MySQL 数据丢失排查案例
May 08 MySQL
MySQL如何构建数据表索引
May 13 MySQL
MySQL中使用or、in与union all在查询命令下的效率对比
May 26 MySQL
浅谈MySQL 亿级数据分页的优化
Jun 15 MySQL
Mysql中where与on的区别及何时使用详析
Aug 04 MySQL
一文了解MYSQL三大范式和表约束
Apr 03 MySQL
深入理解mysql事务隔离级别和存储引擎
Apr 12 MySQL
Mysql查询时间区间日期列表,不会由于数据表数据影响
Apr 19 MySQL
mysql 子查询的使用
Apr 28 MySQL
MySQL导致索引失效的几种情况
Jun 25 MySQL
浅谈MySql update会锁定哪些范围的数据
Jun 25 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
星际中一些鲜为人知的详细资料
2020/03/04 星际争霸
PHP5/ZendEngine2的改进
2006/10/09 PHP
使用PHP维护文件系统
2006/10/09 PHP
PHP 循环列出目录内容的函数代码
2010/05/26 PHP
供参考的 php 学习提高路线分享
2011/10/23 PHP
使用PHP计算两个路径的相对路径
2013/06/14 PHP
微信支付之JSAPI公众号支付详解
2019/05/15 PHP
javascript 原型模式实现OOP的再研究
2009/04/09 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
javascript 在firebug调试时用console.log的方法
2012/05/10 Javascript
JQuery做的一个简单的点灯游戏分享
2014/07/16 Javascript
js电话号码验证方法
2015/09/28 Javascript
javascript从定义到执行 你不知道的那些事
2016/01/04 Javascript
jQuery布局组件EasyUI Layout使用方法详解
2017/02/28 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
Django+Vue跨域环境配置详解
2018/07/06 Javascript
通过循环优化 JavaScript 程序
2019/06/24 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
JavaScript基于面向对象实现的无缝滚动轮播示例
2020/01/17 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
在vscode 中设置 vue模板内容的方法
2020/09/02 Javascript
Python实现爬取知乎神回复简单爬虫代码分享
2015/01/04 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
opencv 获取rtsp流媒体视频的实现方法
2019/08/23 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
使用HTML5的表单验证的简单示例
2015/09/09 HTML / CSS
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
波兰数码相机及配件网上商店: Cyfrowe.pl
2017/06/19 全球购物
意大利奢华内衣制造商:Cosabella
2017/08/29 全球购物
生日宴会答谢词
2014/01/09 职场文书
超市5.1促销活动
2014/01/15 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
2014第二批党员干部对照“四风”找差距检查材料思想汇报
2014/09/18 职场文书
外国人来华邀请函
2015/01/31 职场文书
阿里云国际版 使用Nginx作为HTTPS转发代理服务器
2022/05/11 Servers