0

为了简化,我有一个注册用户的数据库,我想计算每个电子邮件域名有多少封电子邮件(注意我不知道所有域名)

例如,用户表-

id    |    email
------------------
1     | test@hotmail.com
2     | test@somesite.aaa<--unknown to me
3     | test@unknownsite.aaa<--unknown to me
4     | test@hotmail.com
5     | test@somesite.aaa<--unknown to me
6     | test@yahoo.com
7     | test@yahoo.com
8     | test@hotmail.com

(注意:我想计算每封电子邮件而不指定确切的电子邮件)

所以我想要的结果是

suffix         |   count
hotmail.com    |    3
somesite.aaa   |    2
unknownsite.aaa|    1
yahoo.com      |    2

再次强调这一点,我不知道unknownsite.aaa,我也不能在声明中提及它,因为我不知道它,我希望我清楚。

所以基本上我想对我的网站用户用作电子邮件托管网站的内容进行统计。但就像我说的,我会重复第三次,我不知道存在的每个邮件主机。

我将对此进行更多调查,我感觉这是 mysql 无法处理的。

编辑:

我想出了以下解决方案,但似乎有点多余,我讨厌:P

select substring_index(`email`,'@',-1),count(*) as count from users group by substring_index(`email`,'@',-1) order by count ASC;
4

2 回答 2

3
SELECT   SUBSTRING_INDEX(email, '@', -1) AS suffix, COUNT(*) AS count
FROM     users
GROUP BY suffix

sqlfiddle上查看。

于 2012-10-14T21:48:49.740 回答
0

在 mysql 中使用 RLIKE 或 REGEXP

http://dev.mysql.com/doc/refman/5.0/en/regexp.html

于 2012-10-14T21:37:59.940 回答