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