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

如何查询关联表中所有供应商的指定产品价格(含无价格供应商)

问题与解决方案

问题背景

现有查询语句

SELECT
    price
FROM prices
left join suppliers s on prices.id_supplier = s.id_supplier
AND prices.id_product = 57;

表结构及数据

供应商表(Suppliers)

id_suppliername
1Supplier 1
2Supplier 2
3Supplier 3

价格表(Prices)

id_pkid_productdatepriceid_supplier
1572022-12-294.991
2572022-12-296.992

期望输出

获取指定产品(id=57)的所有供应商价格,无价格记录的供应商返回0:

id_supplierprice
14.99
26.99
30

解决方案

完全可行,只需调整关联方向并处理空值即可:

正确查询语句

SELECT
    s.id_supplier,
    COALESCE(p.price, 0) AS price
FROM suppliers s
LEFT JOIN prices p 
    ON s.id_supplier = p.id_supplier
    AND p.id_product = 57;

关键逻辑说明

  1. 关联方向调整:以suppliers为主表做左关联,确保所有供应商都会被纳入结果集,不会遗漏无价格记录的供应商
  2. 空值处理:用COALESCE函数将关联后price字段的NULL值替换为0,满足无价格时返回0的需求
  3. 筛选条件位置:将产品id筛选放在关联条件中(而非WHERE子句),避免过滤掉无对应价格记录的供应商

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:43:53