【问题标题】:how to find duplicate count without counting original如何在不计算原始计数的情况下找到重复计数
【发布时间】:2012-07-13 19:25:27
【问题描述】:

我需要计算 mysql 数据库中重复电子邮件的数量,但不计算第一个(认为是原始的)。在该表中,查询结果应该是单个值“3”(2 个重复的 x@q.com 加上 1 个重复的 f@q.com)。

表格

ID | Name  | Email
1  | Mike  | x@q.com
2  | Peter | p@q.com
3  | Mike  | x@q.com
4  | Mike  | x@q.com
5  | Frank | f@q.com
6  | Jim   | f@q.com

我当前的查询产生的不是一个数字,而是多行,每个电子邮件地址一个,无论表中有多少此电子邮件的重复项:

SELECT value, count(lds1.leadid) FROM leads_form_element lds1 LEFT JOIN leads lds2 ON lds1.leadID = lds2.leadID 
     WHERE lds2.typesID = "31" AND lds1.formElementID = '97'  
     GROUP BY lds1.value HAVING ( COUNT(lds1.value) > 1 )

【问题讨论】:

  • 您可以将SUM 用作SUM(count(lds1.leadid))

标签: mysql join duplicates


【解决方案1】:

这不是一个查询,所以我不确定它是否适用于您的情况,但是您可以执行一个查询来选择总行数,执行第二个查询来选择不同的电子邮件地址,然后将两者相减。这会给你重复的总数......

select count(*) from someTable;
select count(distinct Email) from someTable;

事实上,我不知道这是否可行,但您可以尝试在一个查询中完成所有操作:

select (count(*)-(count(distinct Email))) from someTable

就像我说的,未经测试,但如果它适合你,请告诉我。

【讨论】:

    【解决方案2】:

    尝试在子查询中进行分组,然后进行总结。比如:

    select sum(tot)
    from
    (
        select email, count(1)-1 as tot
        from table
        group by email
        having count(1) > 1
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-13
      • 1970-01-01
      • 2014-01-16
      • 2020-10-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多