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

MySQL查询:如何筛选仅关联country=7的唯一pid记录

检索仅关联country=7的pid记录

给定MySQL表数据:

pidcountry
4361
4365
4367
4397
4403
4467
4461

需求是找出仅关联country=7、未关联其他country值的pid,正确结果为439。直接执行SELECT * from table_name WHERE country = 7;会返回包含关联其他country的pid(如436、446),无法满足需求,以下是几种可行的实现方式:

方法1:GROUP BY + HAVING 分组筛选

通过分组统计每个pid的唯一country数量,同时确保唯一值为7:

SELECT pid
FROM table_name
GROUP BY pid
HAVING COUNT(DISTINCT country) = 1 AND MAX(country) = 7;
  • COUNT(DISTINCT country) = 1:确保该pid仅关联一种country值
  • MAX(country) = 7:验证这个唯一的country值是7(用MIN(country)效果一致)

方法2:子查询排除法

先找出所有关联过非7 country的pid,再从country=7的记录中排除这些pid:

SELECT DISTINCT pid
FROM table_name
WHERE country = 7
AND pid NOT IN (
    SELECT pid
    FROM table_name
    WHERE country != 7
);
  • DISTINCT用于避免同一pid有多条country=7记录时重复输出
  • 子查询生成的是所有存在其他country关联的pid列表,主查询过滤掉这些pid后得到目标结果

方法3:LEFT JOIN 匹配排除

通过左连接自身表,筛选出没有非7 country关联的pid:

SELECT DISTINCT t1.pid
FROM table_name t1
LEFT JOIN table_name t2 ON t1.pid = t2.pid AND t2.country != 7
WHERE t1.country = 7 AND t2.pid IS NULL;
  • 左连接后,t2.pid IS NULL表示该pid没有匹配到任何非7的country记录
  • 结合t1.country = 7即可确定目标pid仅关联country=7

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:40:31