MySQL选择具有最大可能分布的查询

时间:2012-06-26 13:39:24

标签: php mysql select distribution

我正在为一个后缀队列提供随机选择的邮件地址(与实际的时事通讯相关联)。 Postfix是健康的队列很不错但我仍然想要做得更聪明一点。

我正在试图找出一个MySQL查询,它不是随机选择电子邮件地址,而是选择最大的分散。是否可以使用单个查询执行此类操作?或者我需要count different providers然后切片结果并再次选择地址? 后者似乎很傻,第一种方法会更好。

也许只是糟糕的搜索查询,但我找不到类似的问题/解决方案。

提前致谢,

FABRIK

2 个答案:

答案 0 :(得分:0)

我会这样:改变您的数据库表并添加另一个名为例如email_provider。 在注册通讯期间您可以使用PHP从电子邮件提供商处注册电子邮件地址并将其存储到此列,因此值应为yahoo.comgmail.com等...

此外,您必须创建一个逐行遍历表格的脚本,并使用电子邮件地址中的值更新此coulmn以保持数据的一致性。

这应该不难实现......

然后拨打您group by email_providerorder by rand()的查询,并为每个分组提供商选择一个电子邮件地址...

你应该完成......

答案 1 :(得分:0)

好的,这是我的错,我忽略了一点问题。

伪查询:

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;

瞧,分发电子邮件提供商!