[英]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.