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

SQL如何查询仅含CodeID为B且无对应CodeID为A的关联记录

SQL查询解法

方法1:NOT EXISTS 实现(推荐,逻辑最直观)

直接对应你描述的「存在B且同ExternID下不存在A」的逻辑,代码如下:

SELECT Id, ExternID, CodeID
FROM t t_b
WHERE t_b.CodeID = 'B'
AND NOT EXISTS (
    SELECT 1 
    FROM t t_a 
    WHERE t_a.ExternID = t_b.ExternID 
    AND t_a.CodeID = 'A'
);

执行后会直接返回你预期的Id=4的结果。

方法2:分组聚合实现

如果需要批量统计所有符合要求的ExternID,可使用分组筛选的写法:

SELECT MAX(Id) Id, ExternID, 'B' CodeID
FROM t
GROUP BY ExternID
HAVING COUNT(CASE WHEN CodeID = 'A' THEN 1 END) = 0
AND COUNT(CASE WHEN CodeID = 'B' THEN 1 END) >= 1;

方法3:LEFT JOIN 实现

部分数据库引擎对JOIN的优化更好,可选用这种写法:

SELECT t_b.Id, t_b.ExternID, t_b.CodeID
FROM t t_b
LEFT JOIN t t_a 
  ON t_a.ExternID = t_b.ExternID 
  AND t_a.CodeID = 'A'
WHERE t_b.CodeID = 'B'
AND t_a.Id IS NULL;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:24:04