2

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

2 回答 2

2

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

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

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

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

就像我说的,未经测试,但让我知道它是否适合你。

于 2012-07-13T22:21:16.863 回答
1

尝试在子查询中进行分组,然后进行总结。就像是:

select sum(tot)
from
(
    select email, count(1)-1 as tot
    from table
    group by email
    having count(1) > 1
)
于 2012-07-13T22:29:13.163 回答