深度递归与广度递归(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 伪列

相关推荐
碧海银沙音频科技研究院3 小时前
炬芯ATS3089X手表的HFP通话不自动路由到设备BT的问题解决
网络·人工智能·嵌入式硬件·算法
专注仿真8 小时前
引擎扩展性与集成设计深度剖析:从 14 个扩展点到 DIS→HLA 演进之路
开发语言·算法·仿真引擎·推演引擎
码爸8 小时前
支持向量机介绍与示例
算法·机器学习·支持向量机
怕浪猫9 小时前
2028编程圈很火的10个Skills
算法·面试·github
Nil20813 小时前
leetcode 198打家劫舍
算法·leetcode·职场和发展
Shaoshing13 小时前
前缀和与差分
java·数据结构·算法·前缀和·差分
loulanyue_14 小时前
构建房产认知决策智能:Harness底座与AI自进化的技术实践——读贝壳首席算法科学家尹俊希2026云栖专场演讲
人工智能·算法
碧海银沙音频科技研究院14 小时前
基于炬芯ATS录音卡BLE控制协议
人工智能·嵌入式硬件·算法·语音识别
suhan15 小时前
【数据结构】三、栈和队列:6.链队列、双端队列、队列的应用(树的层次遍历、广度优先BFS、先来先服务FCFS)
数据结构·后端·算法