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

查询存在PreliminaryTestReport但无FinalTestReport的RequestID及SQL问题排查

问题分析与解决方案

你的SQL语句失效的核心原因是子查询未关联外层的RequestID:原语句里的not exists判断的是整个表中是否存在FinalTestReport记录,而非当前RequestID对应的记录中是否存在。只要表内有任意一条FinalTestReport,这个条件就会过滤掉所有结果,自然查不到目标数据。

修正后的SQL语句

SELECT RequestID
FROM RequestDocumentSignature
WHERE SignatureDocumentType = 'PreliminaryTestReport'
AND NOT EXISTS (
    SELECT 1
    FROM RequestDocumentSignature AS inner_table
    WHERE inner_table.RequestID = RequestDocumentSignature.RequestID
    AND inner_table.SignatureDocumentType = 'FinalTestReport'
)
GROUP BY RequestID;

其他可选实现方式

  • 分组条件聚合写法:通过统计每种类型的记录数来筛选

    SELECT RequestID
    FROM RequestDocumentSignature
    GROUP BY RequestID
    HAVING SUM(CASE WHEN SignatureDocumentType = 'PreliminaryTestReport' THEN 1 ELSE 0 END) > 0
    AND SUM(CASE WHEN SignatureDocumentType = 'FinalTestReport' THEN 1 ELSE 0 END) = 0;
    
  • 左连接筛选写法:利用左连接后匹配为空的特性判断不存在

    SELECT DISTINCT r1.RequestID
    FROM RequestDocumentSignature r1
    LEFT JOIN RequestDocumentSignature r2 
        ON r1.RequestID = r2.RequestID 
        AND r2.SignatureDocumentType = 'FinalTestReport'
    WHERE r1.SignatureDocumentType = 'PreliminaryTestReport'
    AND r2.RequestID IS NULL;
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 21:59:56