2011-02-25 54 views
4

我有这样MySQL的计数复制

mysql> desc user_changes; 
+----------+--------------+------+-----+---------+-------+ 
| Field | Type   | Null | Key | Default | Extra | 
+----------+--------------+------+-----+---------+-------+ 
| id  | varchar(16) | NO | PRI |   |  | 
| email | varchar(255) | YES | MUL | NULL |  | 
| products | longtext  | YES |  | NULL |  | 
+----------+--------------+------+-----+---------+-------+ 
3 rows in set (0.00 sec) 

一个表,我需要创建一个查询,将通过电子邮件算上所有重复这样

| 20061129180346 | [email protected] | 1^31^9 
| 20061129330638 | [email protected] | 1^31^9 
+5

你需要什么帮助或者你只是想让别人为你做这件事吗? – 2011-02-25 16:50:54

回答

9
SELECT count(*), email 
FROM  user_changes 
GROUP BY email 
HAVING count(*) > 1 

最后(HAVING )子句将选择限制为大于1的电子邮件计数,例如重复。

1
select 
    email, 
    count(email) as email_count 
from 
    user_changes 
group by 
    email 
having 
    count(email) > 1 
order by 
    email asc 
1

我不明白你的第二块,但要获得每封电子邮件的数量做

SELECT email, COUNT(*) AS count FROM user_changes GROUP BY email WHERE count > 1; 
1
select email, count(*) 
from user_changes 
group by email 
having count(*) > 1 
1

这算多少每个电子邮件地址没有在表中,不考虑电子邮件地址的情况。例如,“[email protected]”和“[email protected]”将被视为相同的电子邮件地址。它也只显示重复项,任何刚刚发生的电子邮件地址都不会被退回。如果你想要返回这些,只需省略“HAVING”子句。

SELECT LOWER(email) EmailAddress, COUNT(*) EmailCount 
    FROM user_changes 
GROUP BY LOWER(email) 
HAVING COUNT(*) > 1;