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

如何编写SQL查询:获取Affiliates表中无ControlPanels匹配的记录?

查询无匹配关联记录的SQL写法

嗨,这个需求其实很常见,用LEFT JOIN就能轻松搞定,结合WHERE子句过滤掉匹配到的记录就行。

核心JOIN写法

SELECT a.*
FROM Affiliates a
LEFT JOIN ControlPanels cp ON a.A_ID = cp.CP_AffiliateID
WHERE cp.CP_AffiliateID IS NULL;

逻辑解释

  • LEFT JOIN 会保留左表(Affiliates)的所有记录,同时尝试匹配右表(ControlPanels)中CP_AffiliateID与A_ID相等的行
  • WHERE cp.CP_AffiliateID IS NULL 这一步会过滤掉那些在ControlPanels里找到匹配的行,剩下的就是你要的、没有关联记录的Affiliates数据

补充:性能更优的替代写法(非JOIN但实用)

虽然你问的是JOIN语句,但实际业务中,当ControlPanels的CP_AffiliateID字段有索引时,用NOT EXISTS的性能往往更好,写法也很直观:

SELECT a.*
FROM Affiliates a
WHERE NOT EXISTS (
    SELECT 1
    FROM ControlPanels cp
    WHERE cp.CP_AffiliateID = a.A_ID
);

这个查询的逻辑是:遍历Affiliates的每一行,检查ControlPanels中是否存在对应的关联记录,不存在则保留该行。

额外说明

因为你提到A_ID是主键,无需考虑NULL值的特殊情况,所以上面两种写法都能精准返回你需要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:09:14