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

如何查询不存在emailTypeId=8的id记录?

解决方法:检索未关联emailTypeId=8的id

数据表格

idemailTypeId
15
16
18
28
35
36
46

你提到的select distinct id from table where emailTypeId <> 8无法得到正确结果,是因为只要id存在非8的记录就会被返回,哪怕它同时有8的记录。下面是几种能正确获取目标id的SQL写法:

方案1:NOT EXISTS子查询

SELECT DISTINCT id
FROM your_table t1
WHERE NOT EXISTS (
    SELECT 1
    FROM your_table t2
    WHERE t2.id = t1.id
      AND t2.emailTypeId = 8
);

核心逻辑:逐个检查每个id,确认该id没有任何emailTypeId=8的关联记录。

方案2:LEFT JOIN + 空值过滤

SELECT DISTINCT t1.id
FROM your_table t1
LEFT JOIN your_table t2
  ON t1.id = t2.id
  AND t2.emailTypeId = 8
WHERE t2.id IS NULL;

核心逻辑:将表与自身按id关联,只匹配emailTypeId=8的记录,左连接后NULL的结果就是没有匹配到8的id。

方案3:GROUP BY + HAVING统计

SELECT id
FROM your_table
GROUP BY id
HAVING SUM(CASE WHEN emailTypeId = 8 THEN 1 ELSE 0 END) = 0;

核心逻辑:按id分组后,统计每组中emailTypeId=8的记录数,数量为0的id就是目标结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:25:13