MySQL 查询从电子邮件地址字段计算唯一域

发布于 2024-08-25 05:20:52 字数 266 浏览 4 评论 0原文

我想更好地了解我的客户正在使用哪些域。我可以在 PHP 中轻松完成此操作,方法是分解每个地址并以这种方式计算域。但我想知道是否有一种方法可以通过简单的 MySQL 查询来获取这些信息?

示例输出如下所示:

gmail.com |第3942

章3852

hotmail.com | 209

...等等,其中第一列是电子邮件地址域,第二列是该域的地址数量。

I'd like to get a better idea of what domains my customers are using. I could easily do this in PHP by explodeing each address and counting the domain that way. But I'm wondering if there's a way to get this information with just a plain MySQL query?

This is what sample output would look like:

gmail.com | 3942

yahoo.com | 3852

hotmail.com | 209

... and so on, where the first column is the email addresses domain, and the 2nd column is the number of addresses at that domain.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

痴情 2024-09-01 05:20:52

你必须这样做:

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;

You would have to do something like this:

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;
怪异←思 2024-09-01 05:20:52

在 WoLpH 的答案中添加 ORDER BY 可以使输出更加清晰:

SELECT substring_index(email, '@', -1), COUNT(*) AS MyCount
FROM `database`.`table`
GROUP BY substring_index(email, '@', -1)
ORDER BY MyCount DESC;

Adding ORDER BY to WoLpH's answer makes the output more clear:

SELECT substring_index(email, '@', -1), COUNT(*) AS MyCount
FROM `database`.`table`
GROUP BY substring_index(email, '@', -1)
ORDER BY MyCount DESC;
音盲 2024-09-01 05:20:52
select distinct SUBSTRING(Email, CHARINDEX('@', Email) + 1,LEN(Email) - CHARINDEX ('@', Email)), Count(*) from Tbl_name
Group by SUBSTRING(Email, CHARINDEX('@', Email) + 1,LEN(Email) - CHARINDEX ('@', Email))
order by Count(*) desc
select distinct SUBSTRING(Email, CHARINDEX('@', Email) + 1,LEN(Email) - CHARINDEX ('@', Email)), Count(*) from Tbl_name
Group by SUBSTRING(Email, CHARINDEX('@', Email) + 1,LEN(Email) - CHARINDEX ('@', Email))
order by Count(*) desc
遗失的美好 2024-09-01 05:20:52

对 Wolph 的原始内容进行了一些小调整,以缩短一点并添加漂亮的列名称和限制结果(以防列表很长)。根据自己的喜好调整限制

select substring_index(email, '@', -1) AS domain, count(*) from TABLE group by domain order by count(*) DESC limit 40;

Small tweak to Wolph's original above to shorten a bit and add nice column name and limit results in case list is long. Adjust limit to your own liking

select substring_index(email, '@', -1) AS domain, count(*) from TABLE group by domain order by count(*) DESC limit 40;
狼性发作 2024-09-01 05:20:52

您可以使用此查询从表中获取域的唯一计数。

SELECT substr(email,INSTR(email,"@")+1),count(substr(email,INSTR(email,"@"))) from YOUR_TABLE group by substr(email,INSTR(email,"@"));

You can use this query to get Unique count of domain from table.

SELECT substr(email,INSTR(email,"@")+1),count(substr(email,INSTR(email,"@"))) from YOUR_TABLE group by substr(email,INSTR(email,"@"));
只为一人 2024-09-01 05:20:52
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
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
心头的小情儿 2024-09-01 05:20:52

怎么样

SELECT COUNT(DISTINCT [what you want])
FROM MyTable

COUNT(DISTINCT expr ,[表达式...])

How about something like

SELECT COUNT(DISTINCT [what you want])
FROM MyTable

COUNT(DISTINCT expr,[expr...])

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文