深度递归与广度递归(DFS,BFS)实现

在PG 14及以上数据库中支持DFS,BFS递归

语法如下

sql 复制代码
WITH RECURSIVE part_tmp(id, pid, name) AS (
    SELECT id, pid, name FROM part WHERE pid IS NULL
    UNION ALL
    SELECT d.id, d.pid, d.name FROM part d JOIN part_tmp t ON d.pid = t.id
) SEARCH BREADTH FIRST BY id SET ordercol
SELECT * FROM part_tmp ORDER BY ordercol;

插入测试数据

sql 复制代码
drop table if exists part;
create table part(id int,pid int,name varchar(255) );

insert into part values(0,null,'南大通用');
insert into part values(1,0,'8s');
insert into part values(2,0,'8a');
insert into part values(3,0,'8c');
insert into part values(4,1,'8s产品部');
insert into part values(5,1,'8s测试部');
insert into part values(6,4,'8s产品部-产品1组');
insert into part values(7,4,'8s产品部-产品2组');
insert into part values(8,4,'8s产品部-产品3组');

结果如下

在gbase8s 数据库中,无 WITH RECURSIVE SEARCH BREADTH FIRST BY id SET 语法糖,可以使用自身的connect by递归实现 DFS,BFS,如下,能模拟出PG 特有的set 伪列

相关推荐
云析赢指标公式网426 分钟前
文华财经指标源码笔记:WINNER筹码函数、控盘变量与MACD变体的调试记录
java·笔记·算法
CC数分2 小时前
统计学基础|先把问题问对:数据分析的六大类型
大数据·人工智能·算法
地平线开发者2 小时前
CLIP 的训练机制:从对比学习到图文对齐
深度学习·算法·自动驾驶
hetao17338373 小时前
2026-11-02 hetao1733837 的刷题记录
c++·算法
Geektec3 小时前
IMU 选型完全指南:从硬件参数到算法融合的系统工程视角
算法·imu·陀螺仪·加速度计·元器件选型
CQU_JIAKE3 小时前
11.2【A】
算法
Godspeed Zhao4 小时前
从零开始学AI21——决策树
算法·决策树·机器学习
开开心心就好4 小时前
网页图片批量下载工具,输入链接就保存
服务器·算法·leetcode·支持向量机·pdf·ocr·1024程序员节
Navigator_Z5 小时前
LeetCode //C - 1313. Decompress Run-Length Encoded List
c语言·算法·leetcode
dialect_5 小时前
CODEFORCES ROUND 1127 DIV2
开发语言·c++·算法