流段的上游查询

mysql 8.0环境

使用"点位"表(positions),主键id,点位类型position_type_id(监测点、汇接点),经纬度,表中已有监测点记录,补充汇接点数据;

创建"流段"表(b_flow_segment),主键id,入口点in_pos_id,出口点out_pos_id,途经路径,,录输入所有监测点和汇接点之间的流段;

递归查询:点位30的所有上游管段:

sql 复制代码
with recursive t as (SELECT * FROM `b_flow_segment` WHERE out_pos_id=30 union all select a.* from b_flow_segment a join t on a.out_pos_id = t.in_pos_id) select id,in_pos_id,out_pos_id from t

递归查询:点位30的所有上游监测点:

sql 复制代码
with recursive t as (SELECT * FROM `b_flow_segment` WHERE out_pos_id=30 union all select a.* from b_flow_segment a join t on a.out_pos_id = t.in_pos_id) select t.id,t.in_pos_id,positions.title from t left join positions on t.in_pos_id=positions.id where positions.position_type_id=46

查询点位30到点位5之间的管段:

。。。

查询5点位到24点位间的路径:

sql 复制代码
WITH RECURSIVE shortest_path(in_pos, out_pos, depth, path) AS (
    SELECT 
        in_pos, 
        out_pos, 
        1, 
        concat(CAST(in_pos AS CHAR) ,',' , CAST(out_pos AS CHAR)) 
    FROM b_flow_segment
    WHERE in_pos = 5

    UNION ALL

    SELECT 
        a.in_pos, 
        a.out_pos, 
        shortest_path.depth + 1, 
        CONCAT(shortest_path.path, ',', CAST(a.out_pos AS CHAR))
    FROM shortest_path
    JOIN b_flow_segment a ON shortest_path.out_pos = a.in_pos
    WHERE shortest_path.depth <= 9
)
SELECT * FROM shortest_path 
where out_pos=24
ORDER BY depth
相关推荐
广州灵眸科技有限公司3 小时前
xfce桌面触摸校准:基于灵眸科技EASY-EAl-Orin-Nano
数据库·windows·科技
Cloud云卷云舒6 小时前
云卷云舒:从Oracle/MySQL迁移到HaishanDB:迁移评估工具核心技术拆解
mysql·oracle·ai-native·haishandb·信创数据库替换
憧憬成为web高手6 小时前
皮卡丘靶场速通--sql 2
数据库·sql·mybatis
段一凡-华北理工大学6 小时前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh8 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
用户71333585156249 小时前
MySQL - 事务、redo/undo 日志与 MVCC
mysql
z123456789869 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD9 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
java_logo9 小时前
Docker Compose 部署 ClickHouse:快速搭建高性能列式数据库
数据库·clickhouse·docker·列式数据库·轩辕镜像·高性能数据库·clickhouse部署教程
用户713335851562410 小时前
MySQL - InnoDB 的 Buffer Pool
mysql