如何找到重复计数而不计算原始数量

时间:2012-07-13 22:12:11

标签: mysql join duplicates

我需要计算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 )

2 个答案:

答案 0 :(得分:2)

这不是一个查询所以我不确定它是否适用于您的情况,但您可以执行一个查询来选择总行数,第二个查询来选择不同的电子邮件地址,并减去这两个。这将为您提供重复的总数...

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

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

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

就像我说的那样,未经测试,但请告诉我它是否适合你。

答案 1 :(得分:1)

尝试在子查询中执行分组,然后总结。类似的东西:

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