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

SQL查询:筛选组内无行匹配指定条件的target值

问题场景

给定数据表结构与样本数据如下:

targetstartend
1NULLNULL
1100NULL
2NULLNULL
2NULL100

查询目标:返回所有满足规则的target值——该target对应的所有关联行,均不匹配start IS NOT NULL AND end IS NULL条件。
预期返回结果仅包含target=2,因为target=1存在关联行满足排除条件。

正确实现方式

不需要复杂自连接,两种常用写法都可以实现需求:

写法1:分组聚合判断

按target分组后,统计组内符合排除条件的行数,仅保留计数为0的分组即可:

SELECT target
FROM 你的实际表名
GROUP BY target
HAVING SUM(CASE WHEN start IS NOT NULL AND end IS NULL THEN 1 ELSE 0 END) = 0;

写法2:NOT EXISTS 子查询

通过存在性判断,排除掉「存在符合排除条件的关联行」的target:

SELECT DISTINCT target
FROM 你的实际表名 t
WHERE NOT EXISTS (
    SELECT 1
    FROM 你的实际表名
    WHERE target = t.target
      AND start IS NOT NULL
      AND end IS NULL
);

逻辑验证

  • target=1的关联行中存在start=100、end=NULL的记录,符合排除规则,会被过滤
  • target=2的所有关联行都不满足排除条件,会被正确返回,和预期结果一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 12:45:35