我正在使用随机选择的邮件地址(与实际的时事通讯相关联)提供一个后缀队列。Postfix 是健康队列很好,但我仍然想更聪明一点。
我试图找出一个 MySQL 查询,它不是随机选择电子邮件地址,而是尽可能分散地选择电子邮件地址。是否可以通过单个查询来做这样的事情?或者我需要计算不同的提供商,然后对结果进行切片并再次选择地址?后者似乎很愚蠢,第一种方法会更好。
也许只是糟糕的搜索查询,但我找不到类似的问题/解决方案。
提前致谢,
法布里克
我正在使用随机选择的邮件地址(与实际的时事通讯相关联)提供一个后缀队列。Postfix 是健康队列很好,但我仍然想更聪明一点。
我试图找出一个 MySQL 查询,它不是随机选择电子邮件地址,而是尽可能分散地选择电子邮件地址。是否可以通过单个查询来做这样的事情?或者我需要计算不同的提供商,然后对结果进行切片并再次选择地址?后者似乎很愚蠢,第一种方法会更好。
也许只是糟糕的搜索查询,但我找不到类似的问题/解决方案。
提前致谢,
法布里克
我会这样:更改您的数据库表并添加另一个名为 eg 的列email_provider
。在注册时事通讯期间,您可以使用 PHP 从注册电子邮件地址中提取电子邮件提供商并将其存储到此列,因此值应该是yahoo.com
等gmail.com
...
此外,您还必须创建一个脚本,该脚本将逐行遍历表格并使用来自电子邮件地址的值更新此列,以保持数据一致性。
这应该不难实现...
然后调用 where You 的查询group by email_provider
,order by rand()
并为每个分组的提供商选择一个电子邮件地址...
你应该完成...
好的,这是我的错,我忽略了这个问题。
伪查询:
SELECT `subscriber`.`id`, `subscriber`.`email`, `queue`.`subscriber`,
SUBSTRING(`email`, LOCATE('@', `email`)) AS `domain`,
COUNT(*) AS `count`
FROM `queue`
LEFT JOIN `subscriber` ON `queue`.`subscriber` = `subscriber`.`id`
GROUP BY `domain`
ORDER BY RAND()
LIMIT 0, 100;
瞧,分布式电子邮件提供商!