我正在处理的是我们数据库的电子邮件清理脚本。通过这样做,我们确定了无效,损坏或不再存在的域的列表。我们通过标识域名(即@符号后的所有内容)来实现此目的。
update url_links
set link_bad=1,
emailCarrier='bad-domain.com'
where contact_email like '%@bad-domain.com';
标识提供者并设置字段。问题是我们有数百个无效的域(以上仅是示例)
我想做的是“内部联接”到另一个表,称为“ emailCarriers”。我可以将其写为PHP的循环,但我想在这里问社区是否有人在MySQL中有巧妙的方法。
emailCarriers表包含所有错误的域运营商,因此查询将引用emailCarriers表并尝试在域名部分的子字符串上找到匹配项(在@符号之后),如果匹配,则将执行更新并填充在“ bad-domain.com”中,并带有emailCarriers表中的相应域。
谢谢!
最佳答案
update url_links ul
join emailCarriers ec on ul.contact_email like concat('%@', ec.domain)
set ul.link_bad=1,
ul.emailCarrier=ec.domain;