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

MySQL如何对modelNumber列去重后按productId分组统计行数

问题分析

你的需求是统计每个customerId、productId、modelNumber组合的出现次数,之前写的SQL无法得到预期结果的核心原因是使用聚合函数COUNT时没有指定分组字段,导致所有行被合并为一条统计结果。

正确SQL语句

SELECT 
    customerId,
    productId,
    modelNumber,
    COUNT(*) AS Count
FROM customers
GROUP BY customerId, productId, modelNumber
ORDER BY customerId, productId, modelNumber;

原SQL错误说明

  • 第一个查询:子查询使用COUNT(modelNumber)但未加GROUP BY,全表数据会被聚合为1行,搭配ROW_NUMBER()自然只会返回1条结果。
  • 第二个查询:WHERE IN筛选的是所有出现过的modelNumber,等于没有筛选效果,同时外层COUNT未搭配GROUP BY,还是会将所有行聚合为单条结果。

补充说明

如果你的原始数据中KAuK9nB是KAuK9nB6的输入笔误,上述语句执行后完全匹配你给出的预期输出;如果是业务上需要合并指定近似的customerId,可以先对customerId字段做清洗映射后再执行分组统计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:06:02