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

MySQL中按Table_A分组后统计Table_B关联列的去重计数

MySQL分组关联统计去重值数量解决方案

假设你的表结构大致如下:

  • Table_A:包含分组字段group_column、关联ID字段a_id
  • Table_B:包含关联ID字段a_id、需要统计去重的目标字段target_column

下面提供几种可行的实现方法:

方法1:LEFT JOIN + COUNT(DISTINCT)

这是最直接的写法,适合需要保留Table_A所有分组的场景(即使分组在Table_B中无对应数据):

SELECT 
    ta.group_column,
    COUNT(DISTINCT tb.target_column) AS unique_count
FROM Table_A ta
LEFT JOIN Table_B tb ON ta.a_id = tb.a_id
GROUP BY ta.group_column;

如果只需要统计Table_B中有匹配数据的分组,把LEFT JOIN替换为INNER JOIN即可。

方法2:子查询预统计后关联

先在子查询中按关联ID算出每个ID对应的去重值数量,再和Table_A关联分组,逻辑更清晰,适合复杂关联场景:

SELECT 
    ta.group_column,
    COALESCE(tb_stats.unique_count, 0) AS unique_count
FROM Table_A ta
LEFT JOIN (
    SELECT 
        a_id,
        COUNT(DISTINCT target_column) AS unique_count
    FROM Table_B
    GROUP BY a_id
) tb_stats ON ta.a_id = tb_stats.a_id
GROUP BY ta.group_column;

COALESCE用来将无匹配时的NULL转为0,避免结果出现空值。

方法3:字段级子查询统计

如果场景简单,也可以直接在SELECT字段中嵌套子查询完成统计:

SELECT 
    group_column,
    (SELECT COUNT(DISTINCT target_column) 
     FROM Table_B tb 
     WHERE tb.a_id = ta.a_id) AS unique_count
FROM Table_A ta
GROUP BY group_column;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 20:58:09