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

SQL查询:筛选单一供应商且CanBeMailed为True的ProductID

筛选符合条件的ProductID解决方案

嘿,我懂这种卡壳的感觉!其实这个需求用SQL的分组和筛选就能轻松搞定,咱们一步步来:

你想要从下表中返回ProductID,要求满足两个条件:

  • CanBeMailed = True
  • 该ProductID仅对应一个供应商

以下是你提供的示例表格:

ProductIDSupplierCanBeMailed
1AFalse
1BTrue
2CTrue
3CFalse
4DFalse
4EFalse
5ETrue
6F...

按照你的要求,最终应该返回ProductID 2和5,而排除ProductID 1(因为它对应两个供应商)。

解决方案一:直接筛选+分组验证

这是最简洁的写法,先过滤出CanBeMailed = True的记录,再按ProductID分组,验证每个分组的供应商数量是否为1:

SELECT ProductID
FROM YourTableName
WHERE CanBeMailed = True
GROUP BY ProductID
HAVING COUNT(DISTINCT Supplier) = 1;
  • WHERE CanBeMailed = True:先把符合邮寄条件的记录挑出来
  • GROUP BY ProductID:按产品ID分组
  • HAVING COUNT(DISTINCT Supplier) = 1:确保每个分组里的不同供应商数量只有1个,也就是该产品只对应一个供应商

解决方案二:先统计供应商数量再关联筛选

如果需要更清晰的逻辑拆分,可以先统计每个ProductID对应的供应商总数,再和原表关联筛选:

SELECT p.ProductID
FROM (
    -- 先统计每个产品的供应商总数
    SELECT ProductID, COUNT(DISTINCT Supplier) AS SupplierCount
    FROM YourTableName
    GROUP BY ProductID
) AS p
-- 关联原表找到符合邮寄条件的记录
JOIN YourTableName t ON p.ProductID = t.ProductID
WHERE t.CanBeMailed = True AND p.SupplierCount = 1;

这种写法的好处是可以单独查看每个产品的供应商数量,方便后续扩展其他筛选条件。

注意:记得把代码里的YourTableName替换成你实际使用的表名哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:18:23