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

如何从order与affiliate表统计关联订单数并返回单一结果?

按推广商名称统计订单数量的正确SQL写法

嘿,我来帮你搞定这个统计需求~你的目标是通过affiliate_ID关联order和affiliate表,按affiliate_name分组统计对应的订单总数对吧?你原来的查询语句看起来没写完,而且语法上有问题(比如用AND连接子查询的方式不对),我给你两种实用的正确写法:

1. 仅统计有订单的推广商(INNER JOIN)

这种写法只会返回那些至少有一个订单的推广商记录:

SELECT 
    a.affiliate_name,
    COUNT(o.order_ID) AS order_count
FROM 
    affiliate a
INNER JOIN 
    `order` o ON a.affiliate_ID = o.affiliate_ID
GROUP BY 
    a.affiliate_name;

关键点说明:

  • 用INNER JOIN关联两张表,精准匹配affiliate_ID一致的记录
  • 用COUNT(o.order_ID)替代COUNT(*)更严谨,它只会统计存在的订单ID,避免关联时的空值干扰
  • GROUP BY a.affiliate_name指定按推广商名称分组统计总数

2. 统计所有推广商(含无订单的,LEFT JOIN)

如果你想把没有任何订单的推广商也列出来(订单数显示为0),就用LEFT JOIN搭配COALESCE函数:

SELECT 
    a.affiliate_name,
    COALESCE(COUNT(o.order_ID), 0) AS order_count
FROM 
    affiliate a
LEFT JOIN 
    `order` o ON a.affiliate_ID = o.affiliate_ID
GROUP BY 
    a.affiliate_name;

关键点说明:

  • LEFT JOIN会保留affiliate表的所有记录,即使对应的order表没有匹配项
  • COALESCE函数把统计结果中的空值转换成0,确保无订单的推广商也能显示正确的数量
  • 注意:order是SQL的关键字,所以查询时要用反引号(`)把表名括起来,避免语法报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:26:58