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

如何从表中获取executionid仅关联running状态的运行中数据行

需求实现方案

以下三种实现方案可适配不同场景和数据库版本:

方案1:NOT EXISTS写法(全数据库兼容)

兼容性最强,所有关系型数据库都支持,性能也较为优秀:

SELECT *
FROM 你的表名 t1
WHERE t1.status = 'running'
AND NOT EXISTS (
    SELECT 1
    FROM 你的表名 t2
    WHERE t2.executionid = t1.executionid
    AND t2.status = 'completed'
)

逻辑说明:外层先筛选所有状态为running的记录,再通过NOT EXISTS排除同executionid下存在completed状态的记录,完全匹配需求。

方案2:分组筛选后关联(适合批量统计场景)

如果需要同时统计合法executionid的其他汇总信息,可以用该写法:

SELECT t.*
FROM 你的表名 t
INNER JOIN (
    SELECT executionid
    FROM 你的表名
    GROUP BY executionid
    HAVING SUM(CASE WHEN status = 'completed' THEN 1 ELSE 0 END) = 0
    AND SUM(CASE WHEN status = 'running' THEN 1 ELSE 0 END) >= 1
) valid_ids ON t.executionid = valid_ids.executionid
WHERE t.status = 'running'

方案3:窗口函数写法(适配MySQL8.0+、PostgreSQL、Oracle等支持窗口函数的数据库)

写法更简洁,多条件扩展更方便:

WITH t_with_flag AS (
    SELECT *,
           COUNT(CASE WHEN status = 'completed' THEN 1 END) OVER(PARTITION BY executionid) AS completed_cnt
    FROM 你的表名
)
SELECT * FROM t_with_flag
WHERE status = 'running' AND completed_cnt = 0

内容的提问来源于stack exchange,提问作者Debasish Halder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 15:18:01