后端与系统架构图文讲义627 字

利用MySQL8新特性实现无限层级依赖SQL查询

·全库 579 / 611

《利用MySQL8新特性实现无限层级依赖SQL查询》共 4 页、0.1 万字,通篇围绕 场景 展开,归在「后端与系统架构」这一层。

覆盖场景

适合给 AI 系统搭底座、要管得住的人

目录骨架(6 节)
  1. MySQL8 新特性 with 递归公用表表达式
  2. 全表递归
  3. 场景分析
  4. 案例说明
  5. 案例数据
  6. 案例结果

原 PDF 已逐页还原成图,共 4 页,这里先放前 3 页,其中 1 页识别出了标题。右侧文字由 OCR 按版面重排,可能有个别错字,以图为准;点图可全屏放大。

本讲义目录 · 3 页
  1. 01总裁办 人事部 财务核箅部
  2. 02MySQL8 新特性 with 递归公用表表达式
  3. 03得到 2,1 河北省>石家庄市 得到…
011 / 3
第 1 页
第 1 页

总裁办 人事部 财务核箅部

场景分析

总裁办 人事部 财务核箅部

•技术部 Python 研发部 Php 研发部

北京事业部 上海事业部

案例说明

hame varchar (10),

primary key (id)

案例数据

1 INSERT INTOcityVALUES (1,0,'河北省'); 2 INSERT INTOcityVALUES (2,1,'石家庄市'); 3 INSERT INTOcityVALUES (3,2,'新华区');

7 INSERT INTOcity 8 INSERT INTOcity 9 INSERT INTO city VALUES (9,8,'辛集市');

10 INSERT INTO cityVALUES (10,6,'大厂回族自治县');

VALUES (4,1,'曲周县'); VALUES (5,2,'定州市'); VALUES (6,2,'枣强县'); VALUES (7,6,'永清县'); VALUES (8,2,‘凤山乡');

022 / 3
第 2 页:MySQL8 新特性 with 递归公用表表达式
第 2 页

MySQL8 新特性 with 递归公用表表达式

11 INSERT INTOcityVALUES (11,10,'南进沟村');

案例结果

什么是公用表表达式?公用表表达式是一个命名的临时结果集,它存在与单个查询语句中,主要作用 是可以代替子查询,并且可以被后面的查询多次引用

recursive r as ( with

#起始部分 id, parent_id, name from city c where id =1 select union all #递归部分 select c.id, C.parent_id, CONCAT (r.name,'>' r.id =c.parent_id

12 select id,parent_id, name from r where id=11;

•执行 sql,执行到 id=11,保存退出迭代条件(id=11),同时引用 r 递归公共代码块,进入迭代

• 第一次迭代:执行初始代码块

select id,parent_id,name

from city c where id =1

得到 1,0 河北省 •第二次递归:执行递归部分

city C,r where

033 / 3
第 3 页
第 3 页

得到 2,1 河北省>石家庄市 得到…

select c.id, C.parent_id, CONCAT (r.name,'>',C.name)as name from city c,r where 2 1 =C.parent_id

得到 2,1 河北省>石家庄市 得到 4,1 河北省>曲周县 • 第三次递归:执行递归部分

select c.id,C.parent_id, CONCAT (r.name,'>',c.name)as name from city c,r where

2 2 =C.parent_id

得到 3,2 河北省>石家庄市>新华区 得到 5,2 河北省>石家庄市>定州市 得到 6,2 河北省>石家庄市>枣强县

• 第四次递归:执行递归部分

select c.id,C.parent_id, CONCAT (r.name,'>',C.name)as name from 2 6 =c.parent_id

得到 10,6 河北省>石家庄市>枣强县>大厂回族自治县

• 第五次递归:执行递归部分

select c.id,C.parent_id, CONCAT (r.name,'>',c.name)as name from city c,r where 2 10=C.parent_id

得到 11,10 河北省>石家庄市>枣强县>大厂回族自治县>南进沟村 此时当前 id=11 与 SQLwhere 条件部分 id=11 保持一致,退出递归;

city C,r where

资料里没有你的场景?

把你手上的数据和想解决的那个环节发上来,我们按具体情况回,不复述方法论。

发布需求