mysql递归查询(with recursive语句)

news/2025/2/23 2:25:40/

        我们平常使用递归的方式有多种,其中sql语句编写是很普遍高效的一种,下面分享一种自己平常使用的cte递归查询语句,话不多说,上干货!

WITH RECURSIVE cte ( ID, level, parent) AS(
SELECT DISTINCT de.id, 1 AS level, parentid FROM departmentinfo de WHERE de.parentid is null UNION ALL 
SELECT d1.id, level + 1, a.id FROM departmentinfo d1, cte a  WHERE a.id = d1.parentid 
) 
SELECT cte.id,cte.level,parent FROM cte

 下面为结果实例:

ID

level

parent

176878

1

null

254356

2

176878

367644

2

176878

456768

3

254356

543665

3

254356


http://www.ppmy.cn/news/869322.html

相关文章

python导入cv2打包exe提示cv2不存在的问题记录

项目中遇到图片识别技术,需要在项目导入cv2库。 采用pycham进行开发,项目应用的是python 3.9版本, 项目在开发环境下,运行时一点毛病没有。但是打包成.exe以后运行就会出现如下提示。 Traceback (most recent call last):File &…

python递归函数

递归函数 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 递归函数特性: 必须有一个明确的结束条件;每次进入更深一层递归时,问题规模相比上次递归都应有所减少相邻两次重复之…

inno setup InitializeWizard初始化向导学习(三)

释放图片到临时目录: [Files] Source: "tmp\*"; DestDir: {tmp}; Flags: dontcopy solidbreak; //释放需要的临时资源文件 PROCEDURE extract_temp_files(); BEGIN ExtractTemporaryFile(button_customize_setup.png); ExtractTemporaryFile(button…

> 3636 - Recursive query aborted after 1001 iterations. Try increasing @@cte_max_recursion_depth to

背景 想要自动生成2018-2021之间,3年的日期在一个新表中,但是无奈报错 3636 - Recursive query aborted after 1001 iterations. Try increasing cte_max_recursion_depth to a larger value. 具体的SQL代码见 // INSERT into fulldate -- 全部日期 W…

Unknown custom element: xxx- did you register the component correctly? For recursive comp

记录一下关于 - did you register the component correctly? For recursive components, make sure to provide the “name” option. 这一报错问题。 其实很简单, 就是在home页面导入其他模块时,v-xxx ,xxx是对应模块路由的 name。不可随便…

如何制作一个读取U盘文件系统的工程

1 前言 本文介绍基于CubeMx如何创建一个读取U盘的工程,并通过FAT32文件系统创建和读取文件。 2 创建工程 读取U盘的程序在实际项目中经常会用到,这里我们基于STM3240G-EVAL评估板来示例如何创建一个读取U盘的程序。 在这个示例中,我们将通过一个按键…

前端常见手写 JS 题(巩固你的前端基础)

数组扁平化 const arr [1, [2, [3, [4, 5]]], 6]; // > [1, 2, 3, 4, 5, 6]function flatten(arr) {let result [];for (let i 0; i < arr.length; i) {if (Array.isArray(arr[i])) {result result.concat(flatten(arr[i]));} else {result result.concat(arr[i]);…