如何按指定seller_id查询所有产品及对应佣金(含未设置项)
解决方案:指定卖家ID返回所有产品佣金(含默认0值)
正确SQL查询
SELECT fpp.name AS product_name, fsc.seller_id, COALESCE(fsc.commission, 0) AS commission FROM fp_products AS fpp LEFT JOIN fp_sellers_commissions AS fsc ON fsc.product_id = fpp.id AND fsc.seller_id = 1 LEFT JOIN fp_users AS fpu ON fpu.id = fsc.seller_id;
逻辑说明
- 保留所有产品:将
seller_id = 1的筛选条件从WHERE子句移至LEFT JOIN fp_sellers_commissions的ON条件中,避免过滤掉未设置该卖家佣金的产品。 - 默认值处理:使用
COALESCE函数,当fsc.commission为NULL(即无对应佣金记录)时,自动替换为约定的默认值0。 - 关联简化(可选):如果不需要卖家的额外信息,可移除
LEFT JOIN fp_users关联,进一步简化查询。
测试结果(针对seller_id=1)
| product_name | seller_id | commission |
|---|---|---|
| shirt | 1 | 100 |
| shoes | NULL | 0 |
| black shirt | NULL | 0 |
内容的提问来源于stack exchange,提问作者vitxr
相关产品推荐
相关产品推荐

