我正在编写一个脚本来识别我们数据库中哪些电子邮件提供商最受欢迎。 URL 链接是表的名称,“contact_email”是与链接关联的联系人电子邮件地址。
我编写了以下 MySQL 查询
SELECT
url_links.contact_email,count(url_links.contact_email)
FROM
url_links
group by contact_email order by count(url_links.contact_email) DESC
此查询返回所有电子邮件以及提交列表的人数。我想要做的是修改 MySQL 脚本,以便它为我提供整个提供程序的计数。即 Gmail.com、Yahoo.com、Hotmail.com 等。
我可以将整个数组读入 PHP 并在 @ 符号上进行“爆炸”并以这种方式对其进行分组,但是我很好奇社区是否知道如何修改此脚本,以便而不是每封电子邮件的计数地址 - 它返回组中 Gmail、Yahoo 等中所有电子邮件地址的计数
又名“按子字符串分组”,其中所有项目将按“@”符号之后的所有内容进行分组。
谢谢!
最佳答案
您可以按以下方式分组和计数:
right(url_links.contact_email, length(url_links.contact_email)-INSTR(url_links.contact_email, '@'))
类似这样的东西应该有效:
SELECT
right(url_links.contact_email, length(url_links.contact_email)-INSTR(url_links.contact_email, '@')), count(right(url_links.contact_email, length(url_links.contact_email)-INSTR(url_links.contact_email, '@')))
FROM
url_links
group by right(url_links.contact_email, length(url_links.contact_email)-INSTR(url_links.contact_email, '@')) order by count(right(url_links.contact_email, length(url_links.contact_email)-INSTR(url_links.contact_email, '@'))) DESC
关于php - MySQL 按计数子字符串分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39576817/