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

SQL新手求助:关联PRODUCT与VENDOR表查询供应商产品数

查询供应商及其对应产品数量的SQL语句

嗨,作为SQL新手,这个需求其实挺典型的,我来帮你写好查询语句,再逐段解释清楚每个部分的作用,这样你能理解背后的逻辑~

最终SQL语句

SELECT 
    V.vendor_name,
    V.vendor_phone,
    COUNT(P.Product_ID) AS product_count
FROM 
    VENDOR V
LEFT JOIN 
    PRODUCT P ON V.Vendor_ID = P.Vendor_ID
GROUP BY 
    V.Vendor_ID, V.vendor_name, V.vendor_phone;

逐部分解释

  • 表别名:我给VENDOR起了别名V,PRODUCT起了别名P,这样写起来更简洁,避免重复敲长表名。
  • LEFT JOIN:用LEFT JOIN而不是普通的JOIN,是为了确保即使某个供应商没有任何产品,也会出现在查询结果中,对应的product_count会显示为0。如果用普通JOIN,没有产品的供应商就会被过滤掉,这应该不是你想要的结果~
  • COUNT(P.Product_ID):这里统计产品表的Product_ID(或者任何产品表的非空列都可以),而不是用COUNT(*)。因为如果用COUNT(*),即使供应商没有产品,LEFT JOIN会生成一条带NULL的行,COUNT(*)会把它算成1,而我们需要的是0,所以用产品表的列来计数,NULL值不会被统计进去,就能得到正确的结果。
  • GROUP BY:GROUP BY用来把相同供应商的记录归为一组,这样COUNT函数就能计算每个组(也就是每个供应商)的产品数量。这里我把V.Vendor_ID也加入分组,是因为可能存在不同供应商同名的情况,用主键分组更准确;如果你的业务里vendor_name是唯一的,只分组vendor_name和vendor_phone也可以,但主键分组是更稳妥的做法。

如果你只想看有产品的供应商,把LEFT JOIN改成INNER JOIN就行,不过通常这种需求都会希望包含所有供应商~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:20:56