Email MySQL查询从电子邮件地址字段统计唯一域
我想更好地了解我的客户正在使用哪些域。在PHP中,我可以很容易地做到这一点,方法是Email MySQL查询从电子邮件地址字段统计唯一域,email,mysql,count,dns,Email,Mysql,Count,Dns,我想更好地了解我的客户正在使用哪些域。在PHP中,我可以很容易地做到这一点,方法是explodeing每个地址并以此方式计算域。但是我想知道是否有一种方法可以通过简单的MySQL查询获得这些信息 这是示例输出的样子: gmail.com|3942 yahoo.com|3852 hotmail.com|209 。。。以此类推,其中第一列是电子邮件地址域,第二列是该域的地址数。类似的内容如何 SELECT COUNT(DISTINCT [what you want]) FROM MyTable 您
explode
ing每个地址并以此方式计算域。但是我想知道是否有一种方法可以通过简单的MySQL查询获得这些信息
这是示例输出的样子:
gmail.com|3942
yahoo.com|3852
hotmail.com|209
。。。以此类推,其中第一列是电子邮件地址域,第二列是该域的地址数。类似的内容如何
SELECT COUNT(DISTINCT [what you want])
FROM MyTable
您必须执行以下操作:
SELECT substring_index(email, '@', -1) domain, COUNT(*) email_count
FROM table
GROUP BY substring_index(email, '@', -1)
-- If you want to sort as well:
ORDER BY email_count DESC, domain;
在WoLpH的答案中添加ORDER BY可以使输出更加清晰:
SELECT substring_index(email, '@', -1), COUNT(*) AS MyCount
FROM `database`.`table`
GROUP BY substring_index(email, '@', -1)
ORDER BY MyCount DESC;
您可以使用此查询从表中获取域的唯一计数
SELECT substr(email,INSTR(email,"@")+1),count(substr(email,INSTR(email,"@"))) from YOUR_TABLE group by substr(email,INSTR(email,"@"));
对Wolph上面的原始内容进行了一些小调整,以缩短一点,并添加了漂亮的列名,并限制了案例列表中的结果。根据自己的喜好调整限制
select substring_index(email, '@', -1) AS domain, count(*) from TABLE group by domain order by count(*) DESC limit 40;
我不确定将电子邮件地址的各个部分分为用户部分和域部分是什么意思。非常好,谢谢!我在计数(*)上添加了一个排序,得到了我需要的结果。太棒了!谢谢谢谢那是我在找福特你错过了吗?两年前也提出了同样的建议;-)对我通过MyCount DESC添加了订单;我很想把它添加到他的通讯中,但还没有50个名声。。。很明显,我本可以在我的回答中更清楚地说明这一点。是的,一个解释可能有助于阻止投票。顺便说一句,我没有否决你的回答,因为它是有效的。我真希望他们能放宽50分的限制。。因为它经常产生与预期效果相反的效果。很多人都像你一样。ie发布答案,因为他们还不能发表评论。第22条。
select substring_index(email, '@', -1) AS domain, count(*) from TABLE group by domain order by count(*) DESC limit 40;
SELECT
substring_index(email_address, '@', -1) AS Domain
,COUNT(*) AS MyCount
FROM
database_name.table_name
GROUP BY
substring_index(email_address, '@', -1)
ORDER BY
MyCount DESC