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

MySQL如何取另一表唯一值关联并避免统计结果重复?

问题原因分析
  • 第一个查询的统计逻辑不符合需求:你在GROUP BY中加入了suitno(案件编号)字段,最终统计结果是每个案件下对应律师的关联次数,不是单个律师的全量案件总数。
  • 第二个查询出现重复计数的核心原因:cp_counsel表存在同一enrolment_number对应多条重复记录的情况,直接关联时,每条重复的律师记录都会和cp_cases_counsel中对应的案件记录匹配,最终COUNT结果等于真实案件数乘以该律师在cp_counsel表的重复条数,你遇到的两倍结果就是因为对应律师均存在2条重复记录。
正确实现方案

实现思路:先对cp_counsel表按enrolment_number去重得到唯一律师映射表,再和案件表关联统计,参考SQL如下:

SELECT 
    A.enrolment_number AS id,
    A.counsel,
    COUNT(T.counsel_id) AS total
FROM (
    -- 先对律师表按执业编号去重,取每个执业号对应的唯一律师名称
    SELECT enrolment_number, MIN(counsel) AS counsel 
    FROM cp_counsel 
    GROUP BY enrolment_number
) A
-- 如果不需要统计0案件的律师,可将LEFT JOIN改为INNER JOIN
LEFT JOIN cp_cases_counsel T 
    ON A.enrolment_number = T.counsel_id
GROUP BY A.enrolment_number, A.counsel

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:39:00