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

SQL技术求助:仅返回仅含'Sampling'的Snum数据

解决仅筛选仅含'Sampling'的Snum问题

方法一:分组后验证所有TestName均为'Sampling'

这种方法通过对Snum分组,验证该分组下的所有TestName都等于'Sampling':

SELECT s.Snum
FROM sample s
JOIN test t ON s.Snum = t.Snum
GROUP BY s.Snum
HAVING MAX(t.TestName) = 'Sampling' 
   AND MIN(t.TestName) = 'Sampling';

如果要兼容TestName可能为空的场景,可以改用以下写法:

SELECT s.Snum
FROM sample s
JOIN test t ON s.Snum = t.Snum
GROUP BY s.Snum
HAVING COUNT(DISTINCT CASE WHEN t.TestName != 'Sampling' THEN 1 END) = 0;

方法二:排除存在其他TestName的Snum

先找出所有包含非'Sampling' TestName的Snum,再从结果中排除这些值:

SELECT DISTINCT s.Snum
FROM sample s
JOIN test t ON s.Snum = t.Snum
WHERE t.TestName = 'Sampling'
  AND s.Snum NOT IN (
      SELECT Snum 
      FROM test 
      WHERE TestName != 'Sampling'
  );

原代码的问题分析

你的SQL无法得到预期结果的原因:

  • 提前用WHERE t.ANALYSIS = 'Sampling'过滤了数据,导致无法判断该Snum下是否存在其他TestName;
  • GROUP BY的粒度错误,包含了s.TEXT_ID、s.SAMPLE_NUMBER、t.TEST_NUMBER等字段,分组后不是按Snum整体统计,而是按更细的维度分组,count(t.TestName) = 1仅表示当前小分组内的记录数为1,而非该Snum下只有'Sampling'这一种TestName。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 22:17:09