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 如何分析查询性能
May 12 MySQL
mysql 8.0.24版本安装配置方法图文教程
May 12 MySQL
MySQL如何构建数据表索引
May 13 MySQL
MySQL系列之一 MariaDB-server安装
Jul 02 MySQL
SQL实现LeetCode(178.分数排行)
Aug 04 MySQL
SQL实现LeetCode(196.删除重复邮箱)
Aug 07 MySQL
mysql分表之后如何平滑上线详解
Nov 01 MySQL
MySQL七大JOIN的具体使用
Feb 28 MySQL
mysql数据插入覆盖和时间戳的问题及解决
Mar 25 MySQL
mysql字段为NULL索引是否会失效实例详解
May 30 MySQL
SQL语句中EXISTS的详细用法大全
Jun 25 MySQL
MySQL 原理与优化之Limit 查询优化
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记录代码执行时间(实现代码)
2013/07/05 PHP
php过滤XSS攻击的函数
2013/11/12 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
基于PHP实现邮箱验证激活过程详解
2020/10/28 PHP
javascript游戏开发之《三国志曹操传》零部件开发(二)人物行走的实现
2013/01/23 Javascript
如何设置iframe高度自适应在跨域情况下的可用方法
2013/09/06 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
Javascript removeChild()删除节点及删除子节点的方法
2015/12/27 Javascript
window.onload绑定多个事件的两种解决方案
2016/05/15 Javascript
微信小程序和百度的语音识别接口详解
2019/05/06 Javascript
JS开发常用工具函数(小结)
2019/07/04 Javascript
Python实现高效求解素数代码实例
2015/06/30 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
2018/07/07 Python
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
2019/01/10 Python
详解Python做一个名片管理系统
2019/03/14 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
python基于SMTP协议发送邮件
2019/05/31 Python
使用python实现ftp的文件读写方法
2019/07/02 Python
python 自动轨迹绘制的实例代码
2019/07/05 Python
在交互式环境中执行Python程序过程详解
2019/07/12 Python
python自动化实现登录获取图片验证码功能
2019/11/20 Python
详解基于Scrapy的IP代理池搭建
2020/09/29 Python
Laravel中Kafka的使用详解
2021/03/24 PHP
汉语言文学毕业生求职信
2013/10/01 职场文书
中学生团员自我评价分享
2013/12/07 职场文书
陈欧广告词
2014/03/14 职场文书
马智宇结婚主持词
2014/04/01 职场文书
英语专业毕业生求职信
2014/05/24 职场文书
自主招生学校推荐信范文
2015/03/26 职场文书
党小组评议意见
2015/06/02 职场文书
win10拖拽文件时崩溃怎么解决?win10文件不能拖拽问题解决方法
2022/08/14 数码科技
postgresql如何找到表中重复数据的行并删除
2023/05/08 MySQL