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

如何查询关联2个及以上产品的制造商名称

解决查询拥有2个及以上产品的制造商问题

你的查询错误原因

  • 第一个查询:WHERE子句里的(SELECT COUNT(product.id))会统计整个product表的总记录数(当前是11),并非每个制造商的产品数量;同时,聚合条件(比如基于分组的数量判断)应该用HAVING而非WHERE——WHERE用于过滤行数据,HAVING用于过滤分组后的结果。
  • 第二个查询:除了上述逻辑错误,还存在表名拼写错误(把product写成了producto),导致查询找不到对应表,直接返回空集。

正确的SQL查询方法

方法一:关联后分组筛选

直接关联两张表,按制造商分组后,用HAVING筛选产品数量≥2的制造商:

SELECT manufacturer.name
FROM product
INNER JOIN manufacturer ON product.manufacturer_id = manufacturer.id
GROUP BY manufacturer.id, manufacturer.name
HAVING COUNT(product.id) >= 2;

这里按manufacturer.id分组是为了避免出现同名制造商的情况,保证分组的准确性。

方法二:先统计再关联

先在product表中统计每个制造商的产品数量,筛选出符合条件的制造商ID后,再关联manufacturer表获取名称:

SELECT m.name
FROM (
    SELECT manufacturer_id, COUNT(id) AS product_count
    FROM product
    GROUP BY manufacturer_id
    HAVING product_count >= 2
) AS product_stats
INNER JOIN manufacturer m ON product_stats.manufacturer_id = m.id;

这种写法在数据量较大时,统计逻辑提前执行,能减少关联的数据量,提升查询效率。

预期返回结果

根据你提供的测试数据,查询会返回以下制造商名称:

  • Asus
  • Lenovo
  • Hewlett-Packard
  • Crucial

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 09:22:18