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

SQL表连接需求:如何仅保留单匹配且类别为A的记录?

解决你的SQL关联筛选问题

针对你提出的需求——关联表1(IDs)和表2(Categories),只保留每个ID仅对应一条记录且该记录CAT值为A的结果,这里有两种实用的SQL实现方案:

方案1:子查询分组统计

这种写法逻辑直观,适合快速理解需求:

SELECT c.ID, c.CAT
FROM IDs i
JOIN Categories c ON i.ID = c.ID
WHERE c.CAT = 'A'
-- 通过子查询判断当前ID在Categories中仅存在1条记录
AND (SELECT COUNT(*) FROM Categories WHERE ID = c.ID) = 1;

方案2:窗口函数(性能更优)

如果处理的是大数据量,窗口函数的写法能避免重复计算,效率更高:

WITH CatCounts AS (
    SELECT 
        ID, 
        CAT,
        -- 按ID分组,统计每个ID对应的CAT总条数
        COUNT(*) OVER (PARTITION BY ID) AS total_cats
    FROM Categories
)
SELECT cc.ID, cc.CAT
FROM IDs i
JOIN CatCounts cc ON i.ID = cc.ID
WHERE cc.CAT = 'A' AND cc.total_cats = 1;

逻辑验证

两种方案的核心逻辑一致:先锁定CAT为A的记录,再确保该ID在表2中只有唯一一条关联记录:

  • ID=2、3在表2中仅存在一条CAT=A的记录,完全符合双条件,最终被保留
  • ID=1有2条记录、ID=4的CAT为B、ID=5有3条记录,均不满足要求,被排除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 11:28:20