SQL递归查询树结构语法

embedded/2024/11/25 15:32:45/

对于树形结构数据,经常会有递归查询的需求,语法如下:

注意替换sql中的表名id入参

sql_3">mysql

sql">WITH RECURSIVE node_cte (id, parent_id) 
AS (SELECT id, parent_id FROM my_table -- 表名,换成要查询的名称WHERE id = :id -- 根节点id,换成要查询的根节点idUNION ALLSELECT t.id, t.parent_id FROM my_table tJOIN node_cte nc ON t.parent_id = nc.id
)
SELECT * 
FROM my_table 
WHERE id IN (SELECT id FROM node_cte)

sql_20">postgresql

sql">WITH RECURSIVE node_cte AS (SELECT id, parent_idFROM my_table -- 表名,换成要查询的名称WHERE id = :id -- 根节点id,换成要查询的根节点idUNION ALLSELECT t.id, t.parent_idFROM my_table t -- 表名,换成要查询的名称JOIN node_cte nc ON t.parent_id = nc.id
)
SELECT *
FROM sp_permission
WHERE id IN (SELECT id FROM node_cte) order by id;

http://www.ppmy.cn/embedded/140415.html

相关文章

二分法(折半法)查找【有动图】

二分法,也叫做折半法,就是一种通过有序表的中间元素与目标元素进行对比,根据大小关系排除一半元素,然后继续在剩余的一半中进行查找,重复这个过程直至找到目标值或者确定目标值不存在。 我们从结论往回推,…

Java中的关键字 native

Java中的关键字 native 在Java中,native 关键字用于声明本地方法,即由非Java语言(如C、C)编写的方法。这些本地方法可以通过Java调用,以便访问底层操作系统、硬件资源或遗留代码库。使用 native 关键字的主要目的是让…

Spring Security 中的 AuthenticationProvider接口(验证认证请求)

本篇博客将教您如何在 Spring Security 中使用 AuthenticationProvider 来验证不同的认证逻辑,并展示如何创建自定义的 AuthenticationProvider。 AuthenticationProvider 的作用 AuthenticationProvider 是 Spring Security 中的一个接口,封装了认证逻…

【jvm】为什么要用元空间替代永久代

目录 1. 说明2. 永久代的限制与问题2.1 内存管理限制2.2 垃圾收集效率2.3 类的卸载问题 3. 元空间的优势 1. 说明 1.Java使用元空间替代永久代,这一变化主要源于永久代在实现上存在的限制和问题,以及元空间所提供的更优性能和更高灵活性。2.Java使用元空…

零基础学指针(上)

系列文章目录 🎈 🎈 我的CSDN主页:OTWOL的主页,欢迎!!!👋🏼👋🏼 🎉🎉我的C语言初阶合集:C语言初阶合集,希望能…

微信小程序技术架构图

一、视图层1.WXML&#xff08;WeiXin Markup Language&#xff09; 这是微信小程序的标记语言&#xff0c;类似于 HTML。它用于构建小程序的页面结构。例如&#xff0c;通过标签来定义各种视图元素&#xff0c;如<view>&#xff08;类似于 HTML 中的<div>&#xff…

Optional类

0.由来 实际 Java 开发过程中&#xff0c;尝试访问空引用的属性或者调用空引用的方法&#xff0c;会报 空指针异常&#xff08;NullPointerException&#xff09;。处理可能为 null 的值时&#xff0c;需要增加很多 条件判定&#xff0c;比如&#xff1a; &#x1f497;User&…

C语言中的结构体,指针,联合体的使用

目录 1. 概述2. 定义和初始化3. 成员的使用4. 结构体数组5. 结构体套结构体6. 结构体赋值7. 结构体和指针8. 结构体作为函数参数9. 共用体&#xff08;联合体&#xff09;10. typedef就是取别名总结 1. 概述 数组&#xff1a;连续的相同数据类型的集合 结构体&#xff1a;不同…