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

如何删除未包含全部指定INTRAWORKNO的SEQUENCE数据

解决SEQUENCE完整性校验与删除问题

问题核心

直接使用GROUP BY SEQUENCE + COUNT(INTRAWORKNO)无法得到预期结果,原因是同一SEQUENCE下的同一INTRAWORKNO可能对应多个part,导致计数包含重复项,无法准确判断是否覆盖了@workREQUIREMENTS中的所有必填INTRAWORKNO。

可行解决方案

我们需要先识别出不满足条件的SEQUENCE,再批量删除其对应数据,以下提供两种可靠实现方式:


方法一:基于唯一值计数对比

先统计@workREQUIREMENTS中必填INTRAWORKNO的总数量,再对比每个SEQUENCE下唯一INTRAWORKNO的数量,筛选出数量不足的SEQUENCE并删除:

-- 定义CTE获取必填项总数和每个SEQUENCE的唯一INTRAWORKNO数量
WITH required_total AS (
    SELECT COUNT(*) AS total FROM @workREQUIREMENTS
),
sequence_unique_intras AS (
    SELECT 
        SEQUENCE,
        COUNT(DISTINCT INTRAWORKNO) AS unique_intra_count
    FROM @results
    GROUP BY SEQUENCE
)
-- 删除不满足条件的SEQUENCE数据
DELETE FROM @results
WHERE SEQUENCE IN (
    SELECT su.SEQUENCE
    FROM sequence_unique_intras su
    CROSS JOIN required_total rt
    WHERE su.unique_intra_count < rt.total
)

方法二:基于缺失项检查(更精准)

通过交叉连接生成所有SEQUENCE与必填INTRAWORKNO的组合,再左连接@results找出缺失的组合,最终删除存在缺失项的SEQUENCE:

-- 找出所有存在缺失必填项的SEQUENCE
WITH missing_required_intras AS (
    SELECT 
        s.SEQUENCE
    FROM @workREQUIREMENTS wr
    CROSS JOIN (SELECT DISTINCT SEQUENCE FROM @results) s
    LEFT JOIN @results r 
        ON s.SEQUENCE = r.SEQUENCE 
        AND wr.INTRAWORKNO = r.INTRAWORKNO
    WHERE r.INTRAWORKNO IS NULL
)
-- 删除对应SEQUENCE的所有数据
DELETE FROM @results
WHERE SEQUENCE IN (SELECT DISTINCT SEQUENCE FROM missing_required_intras)

说明

  • 两种方法均能处理以下场景:
    • 缺少部分必填INTRAWORKNO的SEQUENCE(如示例中的1、3)
    • 无任何匹配必填项的SEQUENCE(如示例中的6、7)
    • 包含所有必填项但存在多子部件的SEQUENCE(如示例中的8)会被保留
  • 方法二的优势在于可以直观看到每个SEQUENCE具体缺失哪些INTRAWORKNO,便于排查问题。

内容的提问来源于stack exchange,提问作者Lukas Fürst

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 20:17:35