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

如何查询SUPPORT表中pmi与transactionid组合不存在于CDETAILS表的pmi值

SQL实现方案:提取CDETAILS无匹配的SUPPORT表pmi值

核心需求为校验SUPPORT表的(pmi, transactionid)字段组合是否存在于CDETAILS表,返回无匹配记录对应的pmi值,可通过以下三种常用方案实现:

方案1:LEFT JOIN 左连接实现(全数据库兼容)

对SUPPORT表左关联CDETAILS,关联条件为两个字段同时相等,筛选关联后CDETAILS匹配字段为空的记录即可得到目标数据,兼容所有主流SQL数据库。

SELECT s.pmi
FROM SUPPORT s
LEFT JOIN CDETAILS c 
  ON s.pmi = c.pmi 
  AND s.transactionid = c.transactionid
WHERE c.pmi IS NULL;
-- 如果需要返回去重的pmi,把第一行改成 SELECT DISTINCT s.pmi

方案2:NOT EXISTS 子查询实现(大表性能更优)

逐行校验SUPPORT的记录是否在CDETAILS中存在匹配组合,不存在则返回对应pmi,多数数据库优化器对该语法的执行效率更高,适合数据量较大的场景。

SELECT s.pmi
FROM SUPPORT s
WHERE NOT EXISTS (
  SELECT 1 
  FROM CDETAILS c 
  WHERE c.pmi = s.pmi 
    AND c.transactionid = s.transactionid
);
-- 同样需要去重的话添加DISTINCT:SELECT DISTINCT s.pmi

方案3:NOT IN 实现(仅推荐双字段非空场景使用)

注意如果CDETAILS表的pmi或transactionid存在NULL值,该语法会返回空结果,使用前需确认两个字段均为非空约束。

SELECT pmi
FROM SUPPORT
WHERE (pmi, transactionid) NOT IN (
  SELECT pmi, transactionid
  FROM CDETAILS
);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:21:00