You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL中创建视图统计父子对象组的起止日期与对象总数

需求完全可以实现,使用 MySQL 8.0+/MariaDB 10.2+ 原生支持的递归CTE(公用表表达式)即可完成树形结构的遍历聚合,具体实现代码如下:

CREATE OR REPLACE VIEW object_group_view AS
WITH RECURSIVE object_hierarchy AS (
    -- 锚点成员:取所有根节点,记录根ID作为分组唯一标识
    SELECT 
        id AS node_id,
        id AS group_root_id,
        foreign_key,
        start_date,
        end_date
    FROM objects
    WHERE parent_id = 0
    UNION ALL
    -- 递归成员:遍历所有子节点,继承所属根分组的ID
    SELECT 
        o.id AS node_id,
        oh.group_root_id,
        o.foreign_key,
        o.start_date,
        o.end_date
    FROM objects o
    INNER JOIN object_hierarchy oh ON o.parent_id = oh.node_id
)
-- 按根分组聚合计算对应指标
SELECT
    ROW_NUMBER() OVER (ORDER BY group_root_id) AS id,
    foreign_key,
    MIN(start_date) AS start_date,
    MAX(end_date) AS end_date,
    COUNT(*) AS number_of_objects
FROM object_hierarchy
GROUP BY group_root_id, foreign_key;

执行上述语句创建视图后,直接运行SELECT * FROM object_group_view即可得到你预期的返回结果。
如果你的对象层级超过默认递归深度(默认1000),可以执行SET SESSION cte_max_recursion_depth = 10000;调整会话级的递归深度限制。

内容的提问来源于stack exchange,提问作者Josh Dredge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:36:11