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

如何从stats表查询向所有项目销售指定零件的经销商id_seller

需求分析

需要从stats表中筛选出符合条件的经销商id(id_seller):该经销商至少存在一款零件(id_part)卖给了所有的项目(id_proj),即该零件对应的项目集合覆盖了表中全部的项目取值。

实现思路
  • 首先统计stats表中所有不重复的项目总数量
  • 按照「经销商id+零件id」分组,统计每个分组下对应的不重复项目数量
  • 筛选出分组统计的项目数等于总项目数的分组,取分组中的经销商id去重后就是最终结果
正确实现代码

通用版本(无需硬编码项目值,自动适配表内所有项目)

SELECT DISTINCT id_seller
FROM stats
GROUP BY id_seller, id_part
HAVING COUNT(DISTINCT id_proj) = (SELECT COUNT(DISTINCT id_proj) FROM stats);

如果需要同时返回符合条件的零件id,去掉DISTINCT即可:

SELECT id_seller, id_part
FROM stats
GROUP BY id_seller, id_part
HAVING COUNT(DISTINCT id_proj) = (SELECT COUNT(DISTINCT id_proj) FROM stats);

固定项目版本(已知所有项目为J1-J7时使用)

SELECT DISTINCT id_seller
FROM stats
WHERE id_proj IN ('J1', 'J2', 'J3', 'J4', 'J5', 'J6', 'J7')
GROUP BY id_seller, id_part
HAVING COUNT(DISTINCT id_proj) = 7;
原有代码问题说明

你之前编写的SQL逻辑错误出在EXISTS子查询的判断规则:只要整个stats表中存在任意一条id_proj在目标列表里的记录,EXISTS就会返回真,完全没有校验当前查询的经销商+零件组合是否真的覆盖了全部7个项目,因此返回结果不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:27:03