繁体   English   中英

如果另一个表中存在子控件,则进行MYSQL更新

[英]MYSQL Update IF a subtring exists in another table Inner Join

我正在处理的是我们数据库的电子邮件清理脚本。 通过这样做,我们确定了无效,损坏或不再存在的域的列表。 我们通过标识域名(即@符号后的所有内容)来实现此目的。

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;

您可以尝试这样的事情:

UPDATE url_links u JOIN emailCarrier e 
ON u.SUBSTRING_INDEX(url_links, '@', 1) = b.provider
SET link_bad = 1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM