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

河北邯郸wap网站建设大连建筑工程网

河北邯郸wap网站建设,大连建筑工程网,做微信的网站叫什么软件,做同城网站最赚钱postgresql数据库实现表的树结构查询: 示例数据库表:data_base_basin流域树树结构表SQl语句实现树结构 重点函数:WITH RECURSIVE BasinTree AS 。。。 在 PostgreSQL 中,WITH RECURSIVE 是用于实现 递归查询 的功能。它允许你在一…

postgresql数据库实现表的树结构查询:

示例数据库表:data_base_basin流域树树结构表

在这里插入图片描述

SQl语句实现树结构

重点函数:WITH RECURSIVE BasinTree AS 。。。
在 PostgreSQL 中,WITH RECURSIVE 是用于实现 递归查询 的功能。它允许你在一个 SQL 查询中反复执行某个子查询,直到满足特定的结束条件。这非常适合处理具有层级结构的数据(如树形结构、图结构)。

什么是 WITH RECURSIVE?
WITH RECURSIVE 是 PostgreSQL 提供的一种 公用表表达式(CTE, Common Table Expression),支持递归操作。

递归 CTE 的基本结构:

WITH RECURSIVE cte_name AS (-- 初始查询(非递归部分)SELECT ...UNION ALL-- 递归查询部分SELECT ...FROM cte_nameWHERE ...
)
SELECT * FROM cte_name;

初始查询:定义递归的起点;
递归查询:引用自身(cte_name),逐步向下查找;
UNION ALL:连接初始结果和递归结果;
终止条件:当递归查询不再返回新行时自动终止。

示例0:表树结构查询:

        WITH RECURSIVE BasinTree AS (SELECT DISTINCTbasin_code,basin_name,parent_code,level,order_numFROM data_base_basinWHERE dept_id = #{deptId}and basin_code in<foreach item="basinCode" index="index" collection="basinCodes" open="(" separator="," close=")">#{basinCode, jdbcType=VARCHAR}</foreach>UNION ALLSELECT DISTINCTb.basin_code,b.basin_name,b.parent_code,b.level,b.order_numFROM data_base_basin bINNER JOIN BasinTree t ON b.basin_code = t.parent_code)SELECT DISTINCTbasin_code as basinCode,basin_name as bscName,parent_code as parentCode,level,order_numFROM BasinTreeORDER BY level asc, order_num asc

示例1:生成数字序列(简单演示)

WITH RECURSIVE numbers AS (SELECT 1 AS nUNION ALLSELECT n + 1 FROM numbers WHERE n < 5
)
SELECT * FROM numbers;

输出:

n
---
1
2
3
4
5

示例 2:查询组织架构中的员工上下级关系(树形结构)

CREATE TABLE employee (id INT PRIMARY KEY,name TEXT,manager_id INT
);

在这里插入图片描述
现在想查出 所有属于 Alice(id=1) 管理链下的员工,包括间接下属。

WITH RECURSIVE subordinates AS (-- 初始查询:找出 Alice 的直接下属SELECT id, name, manager_idFROM employeeWHERE manager_id = 1UNION ALL-- 递归查询:继续找下属的下属SELECT e.id, e.name, e.manager_idFROM employee eINNER JOIN subordinates s ON e.manager_id = s.id
)
-- 最终查询:合并所有结果
SELECT * FROM subordinates;

输出:

id | name   | manager_id
---|--------|-----------
2  | Bob    | 1
3  | Carol  | 2
4  | David  | 2

示例 3:查询路径或层级信息(带深度)

你可以添加一个字段来记录层级深度:

WITH RECURSIVE subordinates AS (-- 初始查询SELECT id, name, manager_id, 1 AS levelFROM employeeWHERE manager_id = 1UNION ALL-- 递归查询SELECT e.id, e.name, e.manager_id, s.level + 1FROM employee eINNER JOIN subordinates s ON e.manager_id = s.id
)
SELECT * FROM subordinates;

输出:

id | name   | manager_id | level
---|--------|------------|-------
2  | Bob    | 1          | 1
3  | Carol  | 2          | 2
4  | David  | 2          | 2

注意事项

必须有终止条件
否则会无限递归,最终触发最大递归限制(默认 100 层)

性能问题
如果递归层级很深或数据量大,可能会导致性能下降

避免循环引用
如果父子关系出现环(比如 A → B → A),会导致无限递归并报错

可以加限制
使用 LIMIT 控制最大层级(例如 WHERE level <= 5)


文章转载自:

http://SDrJA4Tg.gmysq.cn
http://5B3VC7Ee.gmysq.cn
http://r0IFTJkT.gmysq.cn
http://DqSl4VUV.gmysq.cn
http://oNanWO5w.gmysq.cn
http://GbchhpQV.gmysq.cn
http://dvBxZ1bz.gmysq.cn
http://tPROUuc9.gmysq.cn
http://7RyaVqmP.gmysq.cn
http://mfWl4Zxt.gmysq.cn
http://m6WnOsPD.gmysq.cn
http://op6mcTTh.gmysq.cn
http://50YikwN4.gmysq.cn
http://i1qD5FeS.gmysq.cn
http://hGwGD6Y2.gmysq.cn
http://SQu8lbLz.gmysq.cn
http://FnUETpym.gmysq.cn
http://cu1UMPtF.gmysq.cn
http://tEDqGSFn.gmysq.cn
http://HtT2M8Fz.gmysq.cn
http://iNJnRRFK.gmysq.cn
http://zt0RTXMu.gmysq.cn
http://hqPlJdtz.gmysq.cn
http://9hhLATgL.gmysq.cn
http://eRhCqocV.gmysq.cn
http://Gx1lLhkO.gmysq.cn
http://HReydESV.gmysq.cn
http://up7sXZv7.gmysq.cn
http://rOC2tzeC.gmysq.cn
http://Cv9JslCs.gmysq.cn
http://www.dtcms.com/wzjs/636090.html

相关文章:

  • 建设行业协会网站发展的建议2022今天出京入京最新通知
  • 做网站怎么能在百度搜索到2022中国互联网公司排名
  • 如何写一个可以做报价计算的网站必须重视的问题之一
  • 为什么会有人攻击我用织梦做的网站手机制作网页链接的软件
  • 个人网站建设教程北京官网seo收费
  • 企业网站模板趋势下载软件的网站推荐
  • html5手机app网站模板免费下载外包公司做网站怎么样
  • 怎么查网站备案进度pythom 网站开发规范
  • 网站建设要学哪些软件有哪些内容做母婴的网站有哪些
  • 自己做的网站如何制作后台技术支持 洛阳网站建设
  • 制作网站的专业公司吗常宁网页设计
  • 外包兼职做图的网站搜索引擎优化是什么?
  • 德州北京网站建设网站设计用什么字体
  • 扬州整站seo免费咨询服务
  • 在家做网站设计网站同步微博
  • 专门做问卷的网站如何给网站设置关键词
  • 便宜做网站怎么样wordpress移动端底部添加菜单
  • 国外网站建设现状房产网签流程及注意事项
  • 烟台市政建设招标网站星空影视文化传媒制作公司
  • 专门做相声的网站网站自助服务建设策划
  • 企业网站seo工作珠宝网站设计
  • 有那些专门做财务分析的网站请打开app
  • 湖北 商城网站建设企业网站公众号
  • 人社局网站建设方案在5分钟内注册小程序
  • 中间商可以做网站吗wordpress换域名教程
  • 浙江理工大学网站设计与建设中山网站建设文化策划
  • 提供网站建设服务的网站价格poiplayer wordpress
  • 做去态网站要学什么语言重庆知名网站制作公司
  • 不同网站相似的页面百度收录吗如何制作一款小程序
  • 网站优化关键词排名网站数据库是什么意思