当前位置: 首页 > article >正文

postgresql 根据文件夹id,一条sql语句获取到它本身及所有子文件、孙文件

PostgreSQL 是最早支持递归公用表表达式 (Recursive CTE)的主流数据库之一从 8.4 版本开始2009 年发布。因此在 PostgreSQL 中实现树形结构查询是其强项语法稳定且功能强大。以下是两种方案标准递归 SQL通用和ltree 扩展PostgreSQL 特有性能更强。方案一标准递归 CTE推荐通用性强这是最标准的 SQL 写法适用于所有现代 PostgreSQL 版本9.1 均完美支持。假设表结构CREATE TABLE folders ( id INT PRIMARY KEY, parent_id INT, -- 根节点为 NULL name VARCHAR(255) ); -- 重要务必给 parent_id 加索引 CREATE INDEX idx_folders_parent_id ON folders(parent_id);SQL 语句WITH RECURSIVE FolderTree AS ( -- 1. 锚点成员查询起始文件夹本身 SELECT id, parent_id, name, 0 AS level, ARRAY[id] AS path -- 可选记录路径用于防止循环 FROM folders WHERE id 100 -- 替换为你的文件夹 ID UNION ALL -- 2. 递归成员查询子节点 SELECT f.id, f.parent_id, f.name, ft.level 1, ft.path || f.id -- 将当前 ID 加入路径数组 FROM folders f INNER JOIN FolderTree ft ON f.parent_id ft.id WHERE NOT f.id ANY(ft.path) -- 可选防止死循环环状引用 ) SELECT * FROM FolderTree;PostgreSQL 的优势防止死循环如上例所示PG 支持数组类型可以轻松维护一个path数组来检测是否出现了环状引用A-B-A避免无限递归。版本要求低几乎不需要考虑版本兼容性问题10 年前的 PG 版本都支持。性能配合parent_id索引性能非常好。方案二使用ltree扩展PostgreSQL 特有性能最优如果你频繁进行树形查询PostgreSQL 提供了一个专门的贡献模块ltree用于存储标签树结构。这是 PG 区别于 MySQL 的一大杀手锏。1. 启用扩展只需执行一次CREATE EXTENSION IF NOT EXISTS ltree;2. 修改表结构增加一个path字段类型为ltree。ALTER TABLE folders ADD COLUMN path ltree; CREATE INDEX idx_folders_path ON folders USING GIST (path);3. 数据示例根节点1子节点1.5孙节点1.5.1004. 查询语句一条 SQL查询 ID 为 100 的节点及其所有子孙假设 100 的路径是1.5.100-- 方法直接匹配路径前缀 SELECT * FROM folders WHERE path 1.5.100.*::ltree; -- 或者更简单的写法先查出该节点路径 SELECT * FROM folders WHERE path (SELECT path FROM folders WHERE id 100) || .*::ltree;操作符表示“是...的后代”。性能利用 GiST 索引查询速度极快远超递归 CTE适合百万级数据量的树形结构。方案三PostgreSQL 14 的CYCLE子句如果你使用的是PostgreSQL 14 或更高版本语法可以更简洁原生支持循环检测WITH RECURSIVE FolderTree AS ( SELECT id, parent_id, name FROM folders WHERE id 100 UNION ALL SELECT f.id, f.parent_id, f.name FROM folders f JOIN FolderTree ft ON f.parent_id ft.id ) SELECT * FROM FolderTree CYCLE id SET is_cycle USING path; -- 自动检测循环标记 is_cycle总结对比特性MySQL 8.0Doris 2.0PostgreSQL递归支持支持 (WITH RECURSIVE)支持 (WITH RECURSIVE)完美支持 (8.4)防死循环较麻烦 (需手动判断)较麻烦简单 (支持数组/原生 CYCLE)专用扩展无无有 (ltree模块)推荐方案递归 CTE路径枚举 (path 字段)递归 CTE 或 ltree建议如果是普通业务直接使用方案一递归 CTE简单可靠无需改表结构。如果是复杂树形结构如分类目录、组织架构且查询频繁强烈建议使用方案二ltree这是 PostgreSQL 的独家优势性能最好。

相关文章:

postgresql 根据文件夹id,一条sql语句获取到它本身及所有子文件、孙文件

PostgreSQL 是最早支持 递归公用表表达式 (Recursive CTE) 的主流数据库之一(从 8.4 版本开始,2009 年发布)。因此,在 PostgreSQL 中实现树形结构查询是其强项,语法稳定且功能强大。以下是两种方案:标准递归…...

高效小红书无水印下载工具:XHS-Downloader全场景应用指南

高效小红书无水印下载工具:XHS-Downloader全场景应用指南 【免费下载链接】XHS-Downloader 免费;轻量;开源,基于 AIOHTTP 模块实现的小红书图文/视频作品采集工具 项目地址: https://gitcode.com/gh_mirrors/xh/XHS-Downloader …...

doris 根据文件夹id,一条sql语句获取到它本身及所有子文件、孙文件

取决于 Apache Doris 的版本。Apache Doris 是基于 MySQL 协议开发的 MPP 架构 OLAP 数据库。它的 SQL 兼容性在近年来提升很快,但递归查询的支持情况如下:1. 核心结论Doris 2.0 及以上版本: 支持。可以使用 WITH RECURSIVE 语法(…...

4个步骤打造无语言障碍的GitHub开发环境

4个步骤打造无语言障碍的GitHub开发环境 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese 问题诊断:当代码世界遇上语言壁垒…...

mysql 根据文件夹id,一条sql语句获取到它本身及所有子文件、孙文件

取决于你的 MySQL 版本。MySQL 8.0 及以上版本: 可以。使用 递归公用表表达式 (Recursive CTE) 即可通过一条 SELECT 语句实现。MySQL 5.7 及以下版本: 原生不支持。标准邻接表模型(id, parent_id)无法用一条 SQL 查询无限层级。需…...

告别软件管家!IT运维用Winget实现企业级批量部署的3个高阶技巧(含排错指南)

企业级Winget实战:3个高阶技巧实现域环境批量部署 每次新员工入职,IT部门总要面对几十台电脑的软件部署任务。传统方式下,工程师们不得不抱着U盘穿梭于工位之间,或是远程指导用户点击"下一步"。这种低效模式正在被Winge…...

gerbv:制造业的隐形守护者——开源工具如何重塑制造文件验证流程

gerbv:制造业的隐形守护者——开源工具如何重塑制造文件验证流程 【免费下载链接】gerbv Maintained fork of gerbv, carrying mostly bugfixes 项目地址: https://gitcode.com/gh_mirrors/ge/gerbv 在精密制造领域,一个0.01毫米的设计偏差可能导…...

BJT放大器实战指南:从共发射极到共集电极的5个设计技巧

BJT放大器实战指南:从共发射极到共集电极的5个设计技巧 在电子设计领域,BJT(双极结型晶体管)放大器一直是模拟电路设计的核心组件。不同于教科书式的理论推导,本文将聚焦工程师在实际设计中最常遇到的挑战,…...

Unity 实现跨平台文件选择与图片加载:Windows 系统下的高效解决方案

1. 为什么需要跨平台文件选择功能 在Unity开发中,经常会遇到需要让用户选择本地文件的场景。比如图片编辑器需要导入素材,音乐播放器需要选择音频文件,文档工具需要打开特定格式的文件。虽然Unity本身提供了Application.OpenURL这样的方法&am…...

Qwen2-VL-2B-Instruct学术利器:LaTeX论文中的图表智能注释与摘要生成

Qwen2-VL-2B-Instruct学术利器:LaTeX论文中的图表智能注释与摘要生成 1. 引言 写论文最头疼的是什么?对我而言,除了构思核心论点,就是处理那些堆积如山的图表了。一张图,你得写图注;一个表格,…...

SHT20温湿度传感器嵌入式驱动开发与I²C通信详解

1. SHT20温湿度传感器技术解析与嵌入式驱动实现SHT20是由瑞士Sensirion公司推出的高精度数字温湿度传感器,基于其专利CMOSens传感技术平台。该器件将温度和湿度敏感元件、信号调理电路、14位ADC、IC接口及校准数据全部集成于单颗3mm3mm DFN封装内,实现了…...

从Raw到YUV:图解摄像头数据格式转换全流程(含ISP处理关键步骤)

从Raw到YUV:图解摄像头数据格式转换全流程(含ISP处理关键步骤) 在嵌入式视觉系统和智能摄像头的开发中,图像传感器输出的原始数据需要经过复杂的处理流程才能转化为可用的YUV格式。这个转换过程不仅关系到图像质量,还直…...

蓝桥杯密码学赛题全解剖:从AES爆破到RSA共模攻击的7种破解姿势

蓝桥杯密码学赛题深度解析:从AES到RSA的实战攻防艺术 1. 密码学竞赛的技术图谱与核心价值 在网络安全竞赛领域,蓝桥杯密码学赛道以其系统化的知识体系和贴近实战的题目设计,成为检验选手密码学功底的重要试金石。不同于常规CTF比赛中分散的…...

零成本打造专业直播系统:DroidCam OBS插件终极指南

零成本打造专业直播系统:DroidCam OBS插件终极指南 【免费下载链接】droidcam-obs-plugin DroidCam OBS Source 项目地址: https://gitcode.com/gh_mirrors/dr/droidcam-obs-plugin 想要将手机摄像头变成高质量直播摄像头,却不想花大价钱购买专业…...

MCGS与S7-1200以太网通讯实战:从组态变量映射到DB块数据交换的最佳实践

MCGS与S7-1200以太网通讯实战:从组态变量映射到DB块数据交换的最佳实践 在工业自动化项目中,稳定高效的设备通讯是系统可靠运行的基础。MCGS组态软件与西门子S7-1200 PLC的以太网通讯,作为国内自动化领域常见的组合方案,其数据交换…...

wan2.1-vae镜像CI/CD流水线:GitHub Actions自动构建+GPU集群部署

wan2.1-vae镜像CI/CD流水线:GitHub Actions自动构建GPU集群部署 1. 项目背景与价值 在AI图像生成领域,快速迭代和稳定部署是关键挑战。wan2.1-vae作为基于Qwen-Image-2512模型的文生图平台,需要高效的构建和部署流程来支持其核心功能&#…...

Qwen-Image惊艳效果展示:RTX4090D上Qwen-VL高清图像理解与精准问答集锦

Qwen-Image惊艳效果展示:RTX4090D上Qwen-VL高清图像理解与精准问答集锦 1. 开篇:强大的视觉语言理解能力 当一张图片摆在面前,你是否想过让AI不仅能看懂画面内容,还能回答各种细节问题?这就是Qwen-VL视觉语言模型的魅…...

智能审稿监控工具如何解决技术文档追踪痛点:效率提升实测

智能审稿监控工具如何解决技术文档追踪痛点:效率提升实测 【免费下载链接】Elsevier-Tracker 项目地址: https://gitcode.com/gh_mirrors/el/Elsevier-Tracker 当技术文档工程师张明第5次在浏览器标签页中切换查找最新审稿状态时,他意识到这种工…...

终极免费Cookie导出工具:3分钟学会本地安全备份浏览器登录状态 [特殊字符]

终极免费Cookie导出工具:3分钟学会本地安全备份浏览器登录状态 🔒 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 你是否曾…...

nodejs+vue基于springboot的家庭物流车辆货车运输运营管理系统可视化qlxl72h7

目录技术栈选择系统模块设计开发步骤可视化集成测试与部署注意事项项目技术支持可定制开发之功能创新亮点源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术栈选择 后端框架: Spring Boot 提供RESTful API支持,集成MyBatis或J…...

Navicat Mac版试用期管理方案:构建可持续的数据库工具使用环境

Navicat Mac版试用期管理方案:构建可持续的数据库工具使用环境 【免费下载链接】navicat_reset_mac navicat16 mac版无限重置试用期脚本 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 在数据库管理工作中,专业工具的持续可用是…...

League Akari智能辅助:颠覆英雄联盟玩家体验的全能工具集

League Akari智能辅助:颠覆英雄联盟玩家体验的全能工具集 【免费下载链接】LeagueAkari ✨兴趣使然的,功能全面的英雄联盟工具集。支持战绩查询、自动秒选等功能。基于 LCU API。 项目地址: https://gitcode.com/gh_mirrors/le/LeagueAkari Leagu…...

Asian Beauty Z-Image Turbo 集成MySQL实战:构建图像生成任务管理后台

Asian Beauty Z-Image Turbo 集成MySQL实战:构建图像生成任务管理后台 最近在帮一个做电商内容的朋友搭建一套AI图像生成系统,他们每天需要批量生成大量的商品展示图、社交媒体配图。直接用模型生成当然没问题,但问题很快就来了:…...

Qwen3.5-27B镜像免配置优势:预置FastAPI中间件支持CORS与限流控制

Qwen3.5-27B镜像免配置优势:预置FastAPI中间件支持CORS与限流控制 如果你正在寻找一个开箱即用、功能强大且部署省心的AI对话模型,那么Qwen3.5-27B镜像绝对值得你花10分钟了解一下。这个镜像最吸引人的地方,不是它背后那个能说会道、还能看懂…...

qmc-decoder:释放被锁住的音乐宝藏,让QQ音乐文件重获自由

qmc-decoder:释放被锁住的音乐宝藏,让QQ音乐文件重获自由 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾有过这样的体验?在QQ音…...

别再只会用ALTER USER了!PostgreSQL密码管理的5种隐藏技巧

PostgreSQL密码管理的5个高阶技巧:安全工程师不会告诉你的秘密 如果你还在用ALTER USER命令直接修改PostgreSQL密码,那么你可能错过了数据库安全防护中最关键的几个环节。作为一款企业级开源数据库,PostgreSQL提供了远比基础密码修改更强大的…...

皇冠CAD(CrownCAD2026R2):提取U/V线(等参数曲线)

根据给定的参数方向和参数值从曲面上提取出一条或多条曲面流线。根据给定的参数方向和参数值从曲面上提取出一条或多条曲面流线(等参考线),此曲面若为裁剪面,则提取的是其原始面上的流线。要生成的流线(等参数线&#…...

树莓派4B新手指南:从零搞定libcamera驱动的CSI摄像头

1. 树莓派4B与CSI摄像头初体验 第一次拿到树莓派4B和CSI摄像头时,我完全是个小白。看着那些密密麻麻的接口和配件,心里直打鼓——这玩意儿真的能用来做视觉项目吗?事实证明,只要按照正确步骤操作,从零开始配置一套完整…...

VScode+esp-idf:深入解析ESP32-CAM开发板SD卡文件系统操作

1. ESP32-CAM开发板与SD卡基础认知 第一次拿到ESP32-CAM开发板时,最吸引我的就是那个小小的SD卡槽。这个火柴盒大小的开发板竟然能拍照、录像还能存数据,简直就像个瑞士军刀。不过在实际操作中,我发现很多新手容易忽略几个关键点:…...

RexUniNLU惊艳效果:中文社交媒体文本ABSA细粒度情感抽取作品集

RexUniNLU惊艳效果:中文社交媒体文本ABSA细粒度情感抽取作品集 1. 引言:当AI学会读懂社交媒体的"言外之意" 你有没有遇到过这样的情况:刷着社交媒体,看到一条"这家餐厅环境不错,但服务真的太慢了&quo…...