news 2026/6/15 12:47:26

Mysql 8.0+ 的递归查询WITH RECURSIVE

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mysql 8.0+ 的递归查询WITH RECURSIVE

MySQL with Recursive是一种基于递归思想的MySQL查询方式,可以实现对数据的递归查询和处理,返回符合条件的数据,在MySQL 8.0版本中,该功能被正式引入。

这种递归查询方式用于单表自关联,可以应用在很多场景下,比如对于树形结构、层级结构的数据处理,以及对数据进行分类汇总等。比如在开发中常见的有部门层级查询,省市区结构查询。

一、基本递归语法
WITH recursive r as (
-- 递归基:由此开始递归
select id,parent_id,name from category where id = 1
union ALL
-- 递归步:关联查询
select c.id,c.parent_id,c.name
from category c inner join r
-- r作为父表,c作为子表,所以查询条件是c的parent_id=r.id
where r.id = c.parent_id
)
select id,parent_id,name from r

二、添加层级 path、与树形自关联结构(用部门id联结)

WITH RECURSIVE department_tree (department_id, department_name, parent_department_id, depth, path) AS (
SELECT
department_id,
department_name,
parent_department_id,
1 AS depth,
CAST(department_id AS CHAR(200)) AS path
FROM company_department
WHERE parent_department_id IS NULL
UNION ALL
SELECT
cd.department_id,
cd.department_name,
cd.parent_department_id,
dt.depth + 1 AS depth,
CONCAT(dt.path, ',', cd.department_id) AS path
FROM company_department cd
JOIN department_tree dt ON cd.parent_department_id = dt.department_id
)
SELECT
department_id, department_name, parent_department_id, depth, path
FROM department_tree
ORDER BY path;

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 16:31:19

孤能子视角:理论下的2026经济动力学脉络

(尝试简约关系线投射建模分析。)信兄回答:基于你提供的政策要点和“能量-信息孤能子理论(EIS)”的框架,我们可以将2026年的经济形势视为一个宏观的 “国家发展孤能子” ,在特定关系场域中,为应对内外“元三力”作用而进…

作者头像 李华
网站建设 2026/6/14 21:27:08

数据库文档自动化终极指南:5分钟一键生成专业数据库文档

数据库文档自动化终极指南:5分钟一键生成专业数据库文档 【免费下载链接】database-export 基于SpringBoot的开源数据库表结构导出word文档工具 项目地址: https://gitcode.com/gh_mirrors/da/database-export 在软件开发的生命周期中,数据库文档…

作者头像 李华
网站建设 2026/6/12 20:18:12

VirtualMonitor虚拟显示器终极指南:零硬件成本打造专业多屏工作环境

还在为单显示器工作效率低下而苦恼吗?每天在多个应用程序间频繁切换,不仅浪费时间还容易打断工作思路。VirtualMonitor虚拟显示器正是为解决这一痛点而生,让您无需购买额外硬件就能享受专业级的多屏工作体验。 【免费下载链接】VirtualMonito…

作者头像 李华
网站建设 2026/6/15 6:30:04

如何快速搭建现代化移动端选择器:终极配置指南

如何快速搭建现代化移动端选择器:终极配置指南 【免费下载链接】mobile-select mobile-select: 是一个多功能的移动端滚动选择器,支持单选到多选,多级级联,提供回调函数和异步数据更新。 项目地址: https://gitcode.com/gh_mirr…

作者头像 李华
网站建设 2026/6/15 7:09:27

PYPOWER完全指南:Python电力系统分析的终极解决方案

想要快速掌握电力系统分析的核心技术吗?PYPOWER作为MATPOWER的Python移植版本,为电力工程师和研究人员提供了完整的电力系统分析工具集。这款强大的Python工具让复杂的潮流计算和最优潮流分析变得简单高效,是电力系统分析的终极选择。 【免费…

作者头像 李华
网站建设 2026/6/12 19:11:03

为什么生产环境都在用Stable Diffusion 3.5 FP8?深度解析其优势

为什么生产环境都在用 Stable Diffusion 3.5 FP8?深度解析其优势 在AI图像生成服务逐渐从实验走向大规模商用的今天,一个现实问题摆在所有技术团队面前:如何在有限的GPU资源下,以更低的成本、更高的效率稳定支撑成千上万用户的文…

作者头像 李华